为了账号安全,请及时绑定邮箱和手机立即绑定

根据 WooCommerce 中的类别和自定义文本字段添加到购物车验证

根据 WooCommerce 中的类别和自定义文本字段添加到购物车验证

PHP
MYYA 2023-07-08 20:47:02
我正在使用 WooCommerce 并在产品页面中添加两个新字段,当我想验证woocommerce_add_to_cart_validation它是否完美运行时。但事实证明,我只想要包含特定类别的产品中的那些字段。这些字段仅显示在“ flower-arrangements”类别中,因此我只想在显示字段时应用验证。我有这个:function garo_validate_custom_field( $passed ) {    global $post;     if (is_product() && has_term( 'flower-arrangements', 'product_cat', $post->ID ) ) {       if( empty( $_POST['text_flowers_label'] ) ) {     wc_add_notice( __( 'Please enter a value into the text flowers label', 'cfwc' ), 'error' );     $passed = false;     echo "<script>alert('hola');</script>";     }     return $passed;  }}add_filter( 'woocommerce_add_to_cart_validation', 'garo_validate_custom_field', 10 );并且直接条件不起作用,我尝试了几种选择,但没有任何结果。结果是没有任何东西被添加到购物车中。我可以做什么?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

该woocommerce_add_to_cart_validation钩子包含不止 1 个参数,而是 5 个参数

使用wc_add_notice相反的<script>alert('hola');</script>

所以你得到


function filter_woocommerce_add_to_cart_validation( $passed, $product_id, $quantity, $variation_id = null, $variations = null ) {

    // Set (multiple) categories

    $categories = array ( 'flower-arrangements', 'categorie-1' );

    

    // If passed & has_term

    if ( $passed && has_term( $categories, 'product_cat', $product_id ) ) {

        // Field is empty

        if( empty( $_POST['text_flowers_label'] ) ) {

            wc_add_notice( __( 'Please enter a value into the text flowers label', 'woocommerce' ), 'error' );

            $passed = false;

        }

    }


    return $passed;

}

add_filter( 'woocommerce_add_to_cart_validation', 'filter_woocommerce_add_to_cart_validation', 10, 5 );



查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号