WordPress在过程的早期,可能在product_id
是已知的。因此,您可能(我不知道WooCommerce在哪里执行此操作)无法有条件地执行此操作。
但是,您可以做的是完全删除该操作,并定义一个包含该条件的新操作。此外,您必须确保在执行旧操作之前完成此操作。像这样:
add_action (\'woocommerce_checkout_process\', \'wpse333234_change_hook\', 1); // early priority
function wpse333234_change_hook () {
remove_action (\'woocommerce_checkout_process\', \'my_custom_checkout_field_process\'); // remove old hooked function
add_action (\'woocommerce_checkout_process\', \'wpse333234_new_hook\', 10); // define new hooked function with later priority
}
function wpse333234_new_hook () {
// Check if set, if its not set add an error.
if ( ! $_POST[\'developer_name\'] && !$product_id==19)
wc_add_notice( __( \'Please fill in your name.\' ), \'error\' );
}
请注意,后一个函数最初会给出错误,因为
$product_id
未在函数中定义。我不知道这在WooCommerce中是如何定义的。您需要一种方法来访问此(全局?)在某种程度上是可变的。