как получить post_id под woocommerce_add_to_cart_validation hook?

Я пытаюсь получить сообщение id под custom_fields_validation (), но я получаю следующее

Ошибка: попытка получить свойство не объекта в строке 116

add_action('woocommerce_add_to_cart_validation','custom_fields_validation'), 10, 3 ); public static function custom_fields_validation() { global $post; if(isRecurring($post->ID)){ if ( empty( $_POST['inputday']) ){ wc_add_notice( __( 'Please select field 1;', 'woocommerce' ), 'error' ); return false; } if ( empty( $_POST['inputtime'] )){ wc_add_notice( __( 'Please select field 2;', 'woocommerce' ), 'error' ); return false; } } return true; } 

Solutions Collecting From Web of "как получить post_id под woocommerce_add_to_cart_validation hook?"

woocommerce_add_to_cart_validation передает идентификатор продукта в качестве второго аргумента функции обратного вызова, поэтому вы можете получить доступ к нему следующим образом:

 function custom_fields_validation( $passed_validation, $product_id ) { if( isRecurring( $product_id ) ) { if ( empty( $_POST['inputday']) ){ wc_add_notice( __( 'Please select field 1;', 'woocommerce' ), 'error' ); return false; } if ( empty( $_POST['inputtime'] )){ wc_add_notice( __( 'Please select field 2;', 'woocommerce' ), 'error' ); return false; } } return $passed_validation; } add_filter( 'woocommerce_add_to_cart_validation', 'custom_fields_validation', 10, 2 ); 

Также обратите внимание, что woocommerce_add_to_cart_validation является фильтром, а не действием, поэтому я использовал apply_filters вместо add_action . Я также исправил синтаксическую ошибку, в которой у вас были дополнительные круглые скобки после 'custom_fields_validation' .

Я также обновил функцию, чтобы вернуть текущее состояние проверки. В противном случае вы можете вернуться к true даже если предыдущая проверка не удалась.