我的设置非常标准,Wordpress + WooCommerce。
我的客户有一个特定的流程,为此我必须开发一个Restful API才能从其他网站创建优惠券。
API运作良好。
在我的API插件代码中,我添加了一个动作以触发电子邮件(我使用自定义电子邮件扩展自WC_Email)
do_action("coupon_code_mail_validation", $params);
所以,在我的WC_Email_Coupon中,我添加了一个类似的触发器:
add_action( 'coupon_code_mail_validation', array( $this, 'trigger' ));
当我执行代码时,我的add_action永远不会被调用(使用XDebug和断点进行验证)。
经过一番研究,我想我发现了为什么,事实上,我是我的API插件,我使用了这个函数:
public function sniff_requests(){
global $wp;
if(isset($wp->query_vars['__api'])){
$this->handle_request();
exit;
}
}
我认为这里的wordpress会死掉并且永远不会执行add_action。 我怎么能在WP死后将woocommerce插件加载到API中?
(对于我从以下方面启发的插件:https://gist.github.com/inspectorfegter/2982319)
感谢您的帮助,如果您需要更多详细信息,请随时与我联系
答案 0 :(得分:0)
我明白了;我不得不补充道:
global $woocommerce;
$mailer = $woocommerce->mailer();
最新版本:
WC()->mailer();