繁体   English   中英

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

[英]Add to cart validation based on category and custom textfield in WooCommerce

我正在使用 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 );

并且直接条件不起作用,我尝试了几个选项,但没有任何效果。 结果是没有任何东西添加到购物车中。 我可以做什么?

  • woocommerce_add_to_cart_validation钩子包含的不是一个而是 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 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM