1

我花了一天的时间试图了解如何根据库存为我的可变产品设置条件按钮。我关注并搜索了所有提示、讨论等......但没有任何问题。

这个想法是:

  1. 如果没有选择变体选择你的风格
  2. 如果有变化添加到购物车
  3. 如果变体不可用或缺货:禁用“添加到购物车”按钮并将文本更改为“已售罄”
  4. 如果所有变体都缺货:禁用“添加到购物车”并将文本更改为“已售罄”

我尝试了不同的片段,我是一个初学者......我还尝试使用 jQuery 动态更改按钮内的文本,因为我有以下类:wc-variation-is-unavailable当变体缺货时......我成功的事情是使按钮变灰:D 但它仍然可以点击..

这是我尝试的最后一个片段,但它更改了所有变体的按钮标签:/

    function ace_custom_change_singe_add_to_cart_text( $text, $product ) {
    global $product;
    $text = __( 'Add to basket' );
    $stock = $product->get_stock_quantity();

    if ( $product->is_type( 'variable' )) {
        if ($stock > 1) {
            $text = __( 'Pick your style' );
        }
        elseif ($stock == 0) {
            $text = __( 'Sold Out' );
        }
    }   

    if ( $product->is_type( 'grouped' )) {
        $text = __( 'View components' );
    }


    // Set a button text for a specific category
    $category = get_term_by( 'slug', 'wine', 'product_cat' );
    if ( $category && in_array( $category->term_id, $product->get_category_ids() ) ) {
        $text = __( 'Pick this bottle' );
    }

    return $text; 
} 
add_filter( 'woocommerce_product_single_add_to_cart_text', 'ace_custom_change_singe_add_to_cart_text', 10, 2 );

这是在我的 variable.php 文件中:

<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>

        <div class="single_variation_wrap">
            <?php

                do_action( 'woocommerce_before_single_variation' );
                do_action( 'woocommerce_single_variation' );
                ?>

                <div class="variations_button">

                    <?php if (StockieSettings::get('woocommerce_add_to_cart_ajax', 'global')) { ?>
                    <a id="dyId" class="single_add_to_cart_button btn alt btn-loading-disabled">
                        <i class="icon ion ion-left">
                            <svg version="1.1"  xmlns="http://www.w3.org/2000/svg" width="12px" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 12 16" xml:space="preserve">
                            <path class="st0" d="M9,4V3c0-1.7-1.3-3-3-3S3,1.3,3,3v1H0v10c0,1.1,0.9,2,2,2h8c1.1,0,2-0.9,2-2V4H9z M4,3c0-1.1,0.9-2,2-2
                                s2,0.9,2,2v1H4V3z"/>
                            </svg>
                        </i>
                        <?php echo (esc_html( $product->single_add_to_cart_text()) ); ?>
                    </a>
                <?php } else { ?>
                    <button type="submit" class="single_add_to_cart_button btn alt btn-loading-disabled">

                        <i class="icon ion ion-left">
                            <svg version="1.1"  xmlns="http://www.w3.org/2000/svg" width="12px" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 12 16" xml:space="preserve">
                            <path class="st0" d="M9,4V3c0-1.7-1.3-3-3-3S3,1.3,3,3v1H0v10c0,1.1,0.9,2,2,2h8c1.1,0,2-0.9,2-2V4H9z M4,3c0-1.1,0.9-2,2-2
                                s2,0.9,2,2v1H4V3z"/>
                            </svg>
                        </i>
                        <?php echo esc_html( $product->single_add_to_cart_text() ); ?>
                    </button>
                <?php } ?>
                </div>
                <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" />
                <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
                <input type="hidden" name="variation_id" class="variation_id" value="" />

                <?php do_action( 'woocommerce_after_single_variation' ); ?>
                </div>

如果有人可以提供帮助,我将不胜感激。

4

0 回答 0