【发布时间】:2019-01-08 18:47:21
【问题描述】:
我正在开发两个插件,每个插件都有以下添加操作挂钩:
add_action( 'woocommerce_thankyou', 'dayticket_wc_order_processing', 11, 1 );
add_action( 'woocommerce_thankyou', 'custom_wc_order_processing', 20, 1 );
但不幸的是,钩子只会触发第一个实例,而不是第二个。
我环顾四周,找到了一些解决方案,但都没有奏效。首先,我尝试获得以下辅助功能:
blayney_dayticket_generate_ticket_pdf($order_id, $tickets);
blayney_alth_litfest_generate_ticket_pdf($order_id, $tickets);
使用以下代码使用一个主函数触发:
add_action( 'woocommerce_thankyou', 'ticket_download', 11, 1);
function ticket_download( $order_id ) {
global $wp;
$order_id = absint( $wp->query_vars['order-received'] );
$tickets = althrop_get_tickets($order_id);
if (is_array($tickets) && count($tickets) > 0) {
blayney_dayticket_generate_ticket_pdf($order_id, $tickets);
blayney_alth_litfest_generate_ticket_pdf($order_id, $tickets);
} else {
echo 'No Ticket available for print!';
}
exit;
}
当这不起作用时,我使用主函数通过以下代码调用每个插件中的两个单独函数:
add_action( 'woocommerce_thankyou', 'master_function', 11, 1);
function master_function() {
return array(custom_wc_order_processing(), dayticket_wc_order_processing());
}
和以前一样,它总是运行第一个函数,但从不运行第二个函数。
任何帮助将不胜感激。
谢谢大家
编辑:
每个插件都有与上述钩子相关的代码:
第一个插件:
add_action( 'woocommerce_thankyou', 'dayticket_wc_order_processing', 11, 1 );
function dayticket_wc_order_processing( $order_id ) {
global $wp;
$order_id = absint( $wp->query_vars['order-received'] );
$tickets = althrop_get_tickets($order_id);
if (is_array($tickets) && count($tickets) > 0) {
blayney_dayticket_generate_ticket_pdf($order_id, $tickets);
} else {
echo 'No Ticket available for print!';
}
exit;
}
第二个插件:
add_action( 'woocommerce_thankyou', 'custom_wc_order_processing', 20, 1 );
function custom_wc_order_processing( $order_id ) {
global $wp;
$order_id = absint( $wp->query_vars['order-received'] );
$tickets = alth_litfest_get_tickets($order_id);
if (is_array($tickets) && count($tickets) > 0) {
blayney_alth_litfest_generate_ticket_pdf($order_id, $tickets);
} else {
echo 'No Ticket available for print!';
}
exit;
}
这样好吗?
【问题讨论】:
-
你应该在你的问题中提供所有相关代码,因为它目前还不能真正测试。
-
嗨对不起,这是第一次发帖,我认为以上内容已经足够了。
-
首先,当您使用
woocommerce_thankyou挂钩时,不需要global $wp;和$order_id = absint( $wp->query_vars['order-received'] );... 只需使用if( $order_id ) return;... 也不需要exit;... 您没有义务声明优先级和钩子中使用的参数数量,因为它们是可选的...... -
所以更像这样:
function custom_wc_order_processing( $order_id ) { if ($order_id) { return blayney_alth_litfest_generate_ticket_pdf($order_id, $tickets); } else { echo 'No Ticket available for print!'; } } -
是的,对于钩子:
add_action( 'woocommerce_thankyou', 'custom_wc_order_processing' );没有函数的优先级和参数数量。这两个代码。
标签: php wordpress function woocommerce hook