WooCommerce变量产品通知问题 - 请选择产品选项

时间:2016-06-29 22:36:05

标签: php wordpress woocommerce product variations

我正在建立一个电子商务网站。我在使用WooCommerce 可变产品时遇到了一些问题。

“添加到购物车”按钮适用于简单的产品,但不适用于可变产品。它会发出"Please choose product options…"通知。

我到处寻找并在线尝试了几个建议,但都没有。所以我查看了WooCommerce源文件: class-wc-form-handler.php

在功能 add_to_cart_handler_variable

function add_to_cart_handler_variable( $product_id ) {
    $adding_to_cart     = wc_get_product( $product_id );
    $variation_id       = empty( $_REQUEST['variation_id'] ) ? '' : absint( $_REQUEST['variation_id'] );
    $quantity           = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );
    $missing_attributes = array();
    $variations         = array();
    $attributes         = $adding_to_cart->get_attributes();
    $variation          = wc_get_product( $variation_id );
...
if ( $missing_attributes ) {
        wc_add_notice( sprintf( _n( '%s is a required field', '%s are required fields', sizeof( $missing_attributes ), 'woocommerce' ), wc_format_list_of_items( $missing_attributes ) ), 'error' );
    } elseif ( empty( $variation_id ) ) {
        wc_add_notice( __( 'Please choose product options…', 'woocommerce' ), 'error' );
    } else {
        // Add to cart validation
        $passed_validation  = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations );

        if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations ) !== false ) {
            wc_add_to_cart_message( $product_id );
            return true;
        }
    }
    return false;
}

错误发生在elseif子句中。
所以我试图回应$variation_id$variations$variation。它们都没有任何内容,因为当我回显$variation_id时:它不会输出任何内容。

有什么建议吗?

5 个答案:

答案 0 :(得分:3)

在商店页面上,您不能对可变产品使用“添加到购物车”按钮,因为在将其添加到购物车之前,您需要先在单个产品页面上选择此变量产品的选项。

在可变产品页面上,在使用"添加到购物车"之前,通常您会为变量产品显示一些选项以选择。按钮。如果你不这样做,你会得到错误信息......
所以在这一点上:

  1. 产品页面中的选项未显示(后端产品页面中的错误设置,主题错误或其他一些插件):
    • 检查您的产品后端设置
    • 尝试切换到默认的wordpress主题(以查看此问题是否仍然存在)
    • 尝试禁用大部分插件。
  2. 选项显示:因此,首先为此产品选择您的选项,然后添加到购物车
  3. 如果此问题与您的主题相关,请与您主题的作者联系并打开支持主题或故障单...

    针对产品ID的产品变更:

    以编程方式获取变量产品ID的产品变体:

    $product = wc_get_product( $product_id );
    $product_variations = $product->get_available_variations();
    
    echo var_dump($product_variations); // Displaying the array
    

    然后获取第一个变体ID:

    $product = wc_get_product( $product_id );
    $product_variations = $product->get_available_variations();
    
    $variation_product_id = $product_variations [0]['variation_id'];
    echo $variation_product_id; // Displaying the variation ID
    

    或者获取此产品ID的所有变体ID的数组:

    $product = wc_get_product( $product_id );
    $product_variations = $product->get_available_variations();
    
    $arr_variations_id = array();
    foreach ($product_variations as $variation) {
        $product_variation_id = $variation['variation_id'];
        array_push( $arr_variations_id, $product_variation_id );
    }
    
    echo var_dump($arr_variations_id); // Displaying the array of variations ID
    

    参考:Change "Add to Cart" button to "Go to Product" in the Shop Page

答案 1 :(得分:0)

我遇到了同样的问题.....删除您的变体色板插件,问题将得到解决

答案 2 :(得分:0)

虽然我们所有人都有共同的样例,但错误(听起来有点怪异)与主题不兼容有关。要进行测试,只需切换到2020主题,然后订购即可。我建议您然后根据您的需要设置2020套间,并停止使用主题,在woocommerce更新推出时,开发人员会休息几天!禁用色板将无济于事,因为代码已经存在。祝你好运。

答案 3 :(得分:0)

  1. 遇到了同样的问题....停用了自动优化插件,问题就解决了。

  2. 此外,要知道要禁用哪个插件,您可以简单地加载页面或网站,检查元素或开发人员模式,然后检查控制台以查看错误来源,然后您可以将其与相关的插件,然后从您的 wp 仪表板禁用。

答案 4 :(得分:0)

以防万一其他人正在构建自定义主题并遇到此问题,变体未按预期添加到购物车中 - 您可能需要检查您的主题是否正在加载 /woocommerce/assets/js/frontend/add -to-cart-variation.min.js 脚本 - 将以下内容添加到您将脚本排入队列以手动添加它的任何位置:

wp_enqueue_script('wc-add-to-cart-variation');

这为我解决了这个问题。