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

Pat*_*our 6 php wordpress product woocommerce product-variations

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

\n

“添加到购物车”按钮适用于简单产品,但不适用于可变产品。它给出了一个"Please choose product options\xe2\x80\xa6"通知。

\n

我到处寻找并尝试了网上的一些建议,但没有一个起作用。所以我查看了 WooCommerce 源文件:class-wc-form-handler.php.

\n

在函数中add_to_cart_handler_variable

\n
function add_to_cart_handler_variable( $product_id ) {\n    $adding_to_cart     = wc_get_product( $product_id );\n    $variation_id       = empty( $_REQUEST['variation_id'] ) ? '' : absint( $_REQUEST['variation_id'] );\n    $quantity           = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );\n    $missing_attributes = array();\n    $variations         = array();\n    $attributes         = $adding_to_cart->get_attributes();\n    $variation          = wc_get_product( $variation_id );\n...\nif ( $missing_attributes ) {\n        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' );\n    } elseif ( empty( $variation_id ) ) {\n        wc_add_notice( __( 'Please choose product options…', 'woocommerce' ), 'error' );\n    } else {\n        // Add to cart validation\n        $passed_validation  = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations );\n\n        if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations ) !== false ) {\n            wc_add_to_cart_message( $product_id );\n            return true;\n        }\n    }\n    return false;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

该错误被捕获在 elseif 子句中。
\n所以我尝试回显$variation_id$variations、 和$variation。它们中都没有任何内容,因为当我 echo $variation_id: 时它不会输出任何内容。

\n

如何解决该错误?

\n

Loi*_*tec 5

在商店页面上,您无法对可变产品使用“添加到购物车”按钮,因为您需要首先进入单个产品页面选择该可变产品的选项,然后再将其添加到购物车。

\n\n

在可变产品页面上,在使用“添加到购物车”按钮之前,通常您会显示一些为可变产品选择的选项。如果你不这样做,你会收到错误消息\xe2\x80\xa6
所以此时:

\n\n
    \n
  1. 这些选项未显示在产品页面中(后端产品页面中的错误设置、主题或某些附加插件的错误):\n\n
      \n
    • 检查您的产品后端设置
    • \n
    • 尝试切换到默认的wordpress主题(看看这个问题是否仍然存在)
    • \n
    • 尝试禁用大部分插件。
    • \n
  2. \n
  3. 显示选项:因此,首先为此产品选择您的选项,然后添加到购物车
  4. \n
\n\n

如果此问题与您的主题相关,请联系主题的作者并打开支持线程或票证\xe2\x80\xa6

\n\n
\n\n

输出产品 ID 的产品变体:

\n\n

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

\n\n
$product = wc_get_product( $product_id );\n$product_variations = $product->get_available_variations();\n\necho var_dump($product_variations); // Displaying the array\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后获取第一个变体ID:

\n\n
$product = wc_get_product( $product_id );\n$product_variations = $product->get_available_variations();\n\n$variation_product_id = $product_variations [0][\'variation_id\'];\necho $variation_product_id; // Displaying the variation ID\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
$product = wc_get_product( $product_id );\n$product_variations = $product->get_available_variations();\n\n$arr_variations_id = array();\nforeach ($product_variations as $variation) {\n    $product_variation_id = $variation[\'variation_id\'];\n    array_push( $arr_variations_id, $product_variation_id );\n}\n\necho var_dump($arr_variations_id); // Displaying the array of variations ID\n
Run Code Online (Sandbox Code Playgroud)\n\n

参考: 将商店页面中的“添加到购物车”按钮更改为“转到产品”

\n