我有两个正在开发的插件,每个插件都有以下添加动作挂钩:
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;
}
可以吗?
答案 0 :(得分:0)
我通过将参数传递到woocommerce_thankyou挂钩中来测试本地主机,并且也没有参数,但在两种情况下都可以正常工作。
您可以使用下面的代码检查其是否可以在您的服务器上正常工作:
add_action( 'woocommerce_thankyou', 'dayticket_wc_order_processing', 11, 1 );
add_action( 'woocommerce_thankyou', 'custom_wc_order_processing', 20, 1 );
function dayticket_wc_order_processing($order_id){
$fp = fopen($_SERVER['DOCUMENT_ROOT']."/dayticket_wc_order_processing.txt","a") or die("Can't open the requested file");
fwrite($fp, ("Order Id ".$order_id));
fwrite($fp,("\n"));
fclose($fp);
}
function custom_wc_order_processing($order_id){
$fp = fopen($_SERVER['DOCUMENT_ROOT']."/custom_wc_order_processing.txt","a") or die("Can't open the requested file");
fwrite($fp, ("Order Id ".$order_id));
fwrite($fp,("\n"));
fclose($fp);
}
add_action( 'woocommerce_thankyou', 'my_custom_tracking' );
add_action( 'woocommerce_thankyou', 'my_custom_tracking2' );
function my_custom_tracking($order_id){
$fp = fopen($_SERVER['DOCUMENT_ROOT']."/my_custom_tracking.txt","a") or die("Can't open the requested file");
fwrite($fp, ("Order Id ".$order_id));
fwrite($fp,("\n"));
fclose($fp);
}
function my_custom_tracking2($order_id){
$fp = fopen($_SERVER['DOCUMENT_ROOT']."/my_custom_tracking2.txt","a") or die("Can't open the requested file");
fwrite($fp, ("Order Id ".$order_id));
fwrite($fp,("\n"));
fclose($fp);
}
我检查了localhost并创建了上述所有4个文件。我还检查了两个不同的插件文件,它们也都可以正常工作。