我想写一个自定义插件,在woocommerce订单完成后做一些动作,但我不能让这个钩子工作。我可以看到这个问题问了很多次。
例如:https://wordpress.stackexchange.com/questions/134463/woocommerce-order-status-completed-action-hook-not-working
这里:https://wordpress.org/support/topic/woocommerce_order_status_completed-is-not-working
标签:https://wordpress.org/support/topic/woocommerce_order_status_completed-action-hook-not-working
但我不能帮助自己的答案,这些家伙收到。
我试着用几种不同的方式添加动作:
add_action( 'woocommerce_order_status_completed', 'ikwoocommerceorderstatuscompleted_func');
add_action( 'woocommerce_order_status_completed', array($this,'ikwoocommerceorderstatuscompleted_func'), 10, 1);
add_action( 'woocommerce_order_status_completed', array(&$this,'ikwoocommerceorderstatuscompleted_func'), 10, 1);
字符串
也尝试了一个类:
class IKHooks {
function __construct() {
add_action( 'woocommerce_order_status_completed', array($this,'ikwoocommerceorderstatuscompleted_func'), 10, 1);
}
public function ikwoocommerceorderstatuscompleted_func( $order_id ) {
}
}
型
我甚至试图把这个动作放在课堂之外:
add_action( 'woocommerce_order_status_completed', array(IKHooks,'ikwoocommerceorderstatuscompleted_func'), 10, 1);
型
这些例子都不起作用。:(
6条答案
按热度按时间vptzau2j1#
在调用你的钩子之前检查以下步骤。
1.检查订单完成电子邮件是否已发送。
1.钩子在插件文件或主题
functions.php
中正确注册字符串
检查回调函数的名称是否在钩子数组中:
型
如果你找到了它,那么一切正常,这意味着你的主题或
functions.php
文件可能有问题。检查文件中的钩子或回调函数,然后查找remove_action
或remove_all_actions
,这可能是阻止钩子被调用的原因。也可以这样办理入住
型
将钩子的优先级从10更改为1,使其比任何其他操作或钩子都先被调用。
8yparm6h2#
你可以用这个钩子
字符串
这个函数看起来像
型
ifsvaxew3#
woocommerce_order_status_changed
和woocommerce_order_status_completed
实际上为我工作。经过2天的挣扎,我意识到,你只是不能var_dump或var_export或print_r或任何在管理面板,它只是不会工作。所以,如果你是一个像我一样的新手,认为这些动作不起作用,只是尝试触发另一个动作,如发送邮件。
这段代码的工作原理:
字符串
lf3rwulv4#
我以前遇到过类似的问题,并解决了它:
以下代码将订单状态更新为
completed
字符串
一旦订单完成,如果你想做一些事情,请参阅以下代码:
型
62lalag45#
尝试使用action hook
woocommerce_order_status_changed
。它需要4个参数。order id,old status*new status和order。更多代码参考在这里
这可能不完全适合你的要求,但似乎是值得的替代品。
nr7wwzry6#
我想你可能在追这个人
woocommerce_payment_complete
字符串