簡體   English   中英

自定義數量字段在 Woocommerce 存檔頁面上不起作用

[英]Custom quantity field doesn't work on Woocommerce archive pages

我已經使用自定義代碼為每個產品的商店頁面和類別頁面添加了一個“數量”字段和“添加到購物車”按鈕,並且還根據產品 ID 為數量字段設置了最小數量、最大數量和步長。 這些產品是葡萄酒,對於其中一些產品,您可以購買至少 6 個,步驟為 6,例如 6、12、18、24 等;對於某些產品,您可以購買至少 12 個,步驟為 12,例如 12、24, 36、48 等

這一切都顯示正常,但數量和價格不會傳遞到購物車頁面。 無論訂購了多少數量,數量始終設置為最小值,並且當從“商店”或“類別”頁面訂購產品時,購物車頁面上僅顯示一個單位的價格。

function wpse_quantity_input_default( $args, $product ) {

    $productID = $product->id;

    foreach( WC()->cart->get_cart() as $key => $item ){

            // MINIMUM / MAXIMUM
            if($productID == '566' || $productID == '562' || $productID == '1177' || $productID == '1181' || $productID == '1183' || $productID == '1185' || $productID == '1242' || $productID == '1250' || $productID == '1251' || $productID == '1252' || $productID == '1254') {

                    $args['input_value'] = 12;
                    $args['max_value']  = 240;  // Maximum value (variations)
                    $args['min_value']  = 12;   // Minimum value (variations)
                    $args['step']       = 12;    // Quantity steps

            } else {

                    $args['input_value'] = 6;
                    $args['max_value']  = 120;  // Maximum value (variations)
                    $args['min_value']  = 6;   // Minimum value (variations)
                    $args['step']       = 6;    // Quantity steps

            }

    } 

return $args;

}

add_filter( 'woocommerce_quantity_input_args', 'wpse_quantity_input_default', 1000, 2 );

所描述的問題來自 Ajax 添加到購物車按鈕(及其數量字段),因此您應該在問題中提供所有相關代碼。

現在,在您提供的代碼中,您無需使用 foreach 循環即可使事情復雜化。 可以使用 in_array() 函數以更有效的方式簡化您的代碼,如下所示:

add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 1000, 2 );
function custom_quantity_input_args( $args, $product ) {
    $products_ids = array(562, 566, 1177, 1181, 1183, 1185, 1242, 1250, 1251, 1252, 1254);
    
    if( in_array( $product->get_id(), $products_ids ) ) {
        $args['input_value'] = 12;
        $args['max_value']  = 240;  // Maximum value (variations)
        $args['min_value']  = 12;   // Minimum value (variations)
        $args['step']       = 12;    // Quantity steps
    } else {
        $args['input_value'] = 6;
        $args['max_value']  = 120;  // Maximum value (variations)
        $args['min_value']  = 6;   // Minimum value (variations)
        $args['step']       = 6;    // Quantity steps
    }
    return $args;
}

代碼位於活動子主題(或活動主題)的 functions.php 文件中。 測試和工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM