自从我从WooCommerce 2.6升级到3后,我遇到了一个问题,即我的一些自定义代码在处理订单时没有运行。我一直与WooCommerce的帮助人员保持联系没有运气,我在Stackoverflow上经历了很多页面而没有提到这个问题。
在我的functions.php文件中,我有这个代码对自定义字段(网站地址)的数据库进行更新......它可以100%工作(在WC 2.6和WC 3中都有):
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST['website_address'] ) ) {
update_post_meta( $order_id, 'Website Address', sanitize_text_field( $_POST['website_address'] ) );
}
}
此代码每次都有效的事实告诉我,$ order_id的值必须在此步骤中存在。
但是,如果在成功运行代码之前,我有一段代码,例如:
IF ($order_id) {
// Email me ...
}
...然后电子邮件永远不会发射。
在版本2.6中,我对此没有任何问题,电子邮件将触发并包含$ order_id的值。
我甚至试过省略IF'$($ order_id)'的IF语句,以便测试电子邮件脚本是否正常工作,并且确实如此。
所以我的问题是,为什么我不能访问$ order_id的值但紧接着使用$ order_id之后的代码,工作正常?
欢迎任何建议/见解。
感谢。
答案 0 :(得分:0)
尝试更新此行 add_action(' woocommerce_checkout_update_order_meta',' my_custom_checkout_field_update_order_meta',10,1);
您应该在添加挂钩时提及您期望的参数。它应该适合你。