【问题标题】:Cant access Magento session in Wordpress无法在 Wordpress 中访问 Magento 会话
【发布时间】:2014-01-07 03:33:38
【问题描述】:

我正在使用 Wordpress 插件 MWI - Mage/WP 集成来创建一个以 Wordpress 为核心并在子文件夹中包含 Magento 的网站。

我希望能够在 Wordpress 页面中访问 Magento 会话。感谢 MWI 插件,我能够访问“客户/会话”,但它似乎与我访问网站的 Magento 部分时使用的会话不同。

我知道这一点是因为我已经在 Magento 的会话中添加了数据,但是当我来到主页(由 Wordpress 提供支持)时,自定义数据不存在!

这是我在 Magento 中添加额外数据的方法:

Mage::getSingleton('customer/session')->setData("foo","bar");

然后得到它:

Mage::getSingleton('customer/session')->getData("foo");

这将返回 NULL。

有什么想法吗?

【问题讨论】:

    标签: php wordpress magento session


    【解决方案1】:

    所以,经过更多的试验和错误,我能够解决这个问题。

    基本上,通过切换到核心/会话而不是客户/会话,我可以在 Wordpress 中访问相同的会话。所以设置和成为:

    Mage::getSingleton('core/session')->setData("foo","bar");
    Mage::getSingleton('core/session')->getData("foo");
    

    在 Wordpress 中使用很重要:

    Mage::getSingleton('core/session', array('name' => 'frontend'))->getData("foo");
    

    【讨论】:

      【解决方案2】:

      有一个插件可以做到这一点:

      http://wordpress.org/plugins/mage-enabler/

      【讨论】:

        【解决方案3】:

        另外,作为替代解决方案,我们可以使用帮助程序创建简单的模块来获取会话变量。这是返回 Magento 会话的辅助函数:

            class Namespace_Modulename_Helper_Data extends Mage_Core_Helper_Abstract
            {
                public function getSession()
                {
                    return return Mage::getSingleton('core/session', array('name' => 'frontend'));
                }
            }
        

        然后我们可以通过这样的代码访问会话数据:

            require_once('path_to/Mage.php');
            Mage::app();
            var_dump(Mage::helper('namespace_modulename')->getSession()->getData());
        

        【讨论】:

          猜你喜欢
          • 2017-12-07
          • 1970-01-01
          • 2018-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-12
          • 2014-06-25
          • 2011-12-02
          相关资源
          最近更新 更多