我有两个我正在开发的插件,每个插件都有下面的add action钩子:
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;
}这样可以吗?
发布于 2018-08-01 21:07:52
我在本地主机上进行了测试,将参数传递到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个文件。我还签入了两个不同的插件文件,它也在工作。
https://stackoverflow.com/questions/51629183
复制相似问题