gpt4 book ai didi

javascript - WooCommerce Hook ( woocommerce_order_status_changed ) 无法运行 javascript

转载 作者:行者123 更新时间:2023-11-29 15:54:58 24 4
gpt4 key购买 nike

我试图在这个钩子(Hook)中运行 javascript,但它无法工作。我很确定这个钩子(Hook)被触发了,因为我可以执行 php 插入到数据库并写入 debug_log。请问有没有办法解决?

函数.php

add_action( 'woocommerce_order_status_changed', 'your_function', 10, 3 ); 
function your_function( $order_id, $old_status, $new_status ){

// This doesnt work

// Enqueued script with localized data.
wp_enqueue_script( 'order_status_changed_1', 'https://www.gstatic.com/firebasejs/7.3.0/firebase-app.js');
wp_enqueue_script( 'order_status_changed_2', 'https://www.gstatic.com/firebasejs/7.3.0/firebase-auth.js');
wp_enqueue_script( 'order_status_changed_3', 'https://www.gstatic.com/firebasejs/7.3.0/firebase-firestore.js');
wp_enqueue_script( 'order_status_changed_4', plugin_dir_url( __FILE__ ) . 'js/scripts_v1.js' );

// Localize the script with new data
$data = array(
'order_number' => $order_id,
'order_status' => $new_status,
'action' => 'update_order_status'
);
wp_localize_script( 'order_status_changed_4', 'data', $data );

// This work (Below code)

global $wpdb;
$sql = $wpdb->prepare("INSERT INTO `test`(`order_id`, `status`) VALUES (%s,%s)",$order_id,$new_status);
$wpdb->query($sql);

error_log("Trigger");
}

scripts_v1.js

var action = data.action;
if(action == "update_order_status" ){

console.log("here");

db.collection("orders").doc(data.order_number).update({
orderStatus : data.order_status
})
.then(function() {
console.log("Document successfully updated!");
})
.catch(function(error) {
// The document probably doesn't exist.
console.error("Error updating document: ", error);
});
}

最佳答案

Hook 可能会被触发,但这不是将脚本排入队列的方式。脚本由以下人员添加:

add_action( 'admin_enqueue_scripts', 'your_function')
function your_function(){
wp_enqueue_script( 'order_status_changed_1','https://www.gstatic.com/firebasejs/7.3.0/firebase-app.js');
}

这意味着您的 JS 未添加到页面(检查开发人员工具中的网络选项卡)。

您可以通过直接输出脚本以不同的方式添加脚本。或者您有条件地在订单状态更改后加载的页面上加载脚本。

这意味着您可以像往常一样使用入队操作。但是您添加了一个条件来使脚本排队:

if(is_page('order-status-changed'){
// wp_enqueue_script
}

也许您可以提供更多有关订单更改状态的信息,以及您的目标是什么?

关于javascript - WooCommerce Hook ( woocommerce_order_status_changed ) 无法运行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58832435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com