Wc()和$WooCommerce之间有什么区别

时间:2017-08-05 作者:armadadrive

我想取消设置一些WooCommerce会话变量,因为在页面加载时,我正在使用的挂钩尚未触发,这会留下以前的会话数据填充签出传送表。

在从钩子回调访问的任何函数中,我都可以访问WooCommerce会话变量,如:

WC()->session->get(\'foo\');

然而,在这些回调之外,WC 未定义。我尝试设置:

global $woocommerce; 和通过访问$woocommerce->session->__unset(\'foo\'); 但得到通知:

尝试获取非对象的属性

以及错误:

致命错误:未捕获错误:调用null上的成员函数\\uu unset()

所以,很明显$woocommerce 全局与WC (我猜是被钩子钩住了?)

我想我可以使用签出页面上启动的第一个钩子之一取消设置这些变量,但这让我想知道:

两者的区别是什么WC()$woocommerce? 它们不是都是访问WooCommerce方法的方法吗?

1 个回复
最合适的回答,由SO网友:ClemC 整理而成

wc(); 返回的singleton实例WooCommerce 避免使用全局变量。

WC设置$woocommerce 全局方式:$GLOBALS[\'woocommerce\'] = wc();, 所以使用其中一个似乎是一样的。。。

EDIT

关于你的错误,你得到它们是因为$woocommerce->session 尚未设置。WC初始化WC_Session_Handler 仅在前端或CRON请求上。选择相应的动作钩。

结束

相关推荐

Hooks for Links Box

Possible Duplicate:Getting archive pages in WP's AJAX internal link finder? 新的有挂钩吗internal links box 创建于WP 3.1? 我正在尝试在插件中修改它。