在庫に基づいて可変商品に条件付きボタンを設定する方法を理解するために一日を費やしました。すべてのヒント、ディスカッションなどをフォローして検索しました...しかし、何も問題ありません。
アイデアは次のとおりです。
- バリエーションが選択されていない場合:スタイルを選択してください
- バリエーションがある場合:カートに入れる
- バリエーションが利用できないか、在庫がない場合: 「カートに追加」ボタンを無効にし、テキストを「売り切れ」に変更します。
- すべてのバリエーションが在庫切れの場合: [カートに追加] を無効にし、テキストを [売り切れ] に変更します。
私はさまざまなスニペットを試しましたが、私はかなりの初心者です...次のクラスがあるため、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>
誰かが助けてくれれば、本当に感謝します。