如何在WooCommerce_Add_to_Cart_Validation挂钩下检索post_id?

时间:2017-07-17 作者:Himani

我试图在custom\\u fields\\u validation()函数下检索帖子id,但收到以下消息

错误:尝试在第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;
    }

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

woocommerce_add_to_cart_validation 将产品id作为第二个参数传递给回调函数,因此可以如下方式访问它:

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 即使之前的验证失败。

结束

相关推荐

Hooks for Links Box

Possible Duplicate:Getting archive pages in WP's AJAX internal link finder? 新的有挂钩吗internal links box 创建于WP 3.1? 我正在尝试在插件中修改它。