Я провел весь день, пытаясь понять, как я могу установить условную кнопку для моих переменных продуктов на основе запаса. Я следовал и искал все советы, обсуждения и т. Д. c ... Но ничего не подходит.
Идея такова:
- , если вариант не выбран : Выберите свой стиль
- если вариация доступна : добавить в корзину
- если вариация нет доступно или нет в наличии: отключите кнопку «добавить в корзину» и измените текст на «продано»
- , если все варианты нет в наличии : отключить «добавить в корзину "и измените текст на" продано "
Я пробовал разные фрагменты, я довольно новичок ... Я также пытался динамически изменять текст внутри кнопки с помощью 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 );
Это моя переменная. php file:
<?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>
Если кто-то может помочь, я буду очень благодарен.