Новый стиль кнопки корзины, когда товар находится в корзине в WooCommerce

Jan 15 2021

Я использую код, который изменяет текст кнопки «Добавить в корзину» для продукта, если этот товар уже находится в корзине.

/* for single product */
add_filter( 'woocommerce_product_single_add_to_cart_text', 'single_product_button_text' );
 
function single_product_button_text( $text ) { if( WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( get_the_ID() ) ) ) { $text = 'Product in cart';
    }
 
    return $text; } /* for archive/category pages */ add_filter( 'woocommerce_product_add_to_cart_text', 'products_button_text', 20, 2 ); function products_button_text( $text, $product ) { if( $product->is_type( 'simple' )
       && $product->is_purchasable() && $product->is_in_stock()
       && WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( $product->get_id() ) ) ) { $text = 'Product in cart';
 
    }
 
    return $text;
 
}

Подскажите, как можно изменить стиль кнопки «Добавить в корзину» для товара, если товар уже был добавлен в корзину?

Я попытался добавить код в файл /loop/add-to-cart.php, как показано здесь. Изменить стиль кнопки добавления в корзину, когда товар находится в корзине в Woocommerce, но у меня это не работает.

Есть ли другие варианты кода, которые помогут решить мой вопрос?

Буду рад вашей помощи!

Ответы

1 7uc1f3r Jan 15 2021 at 15:18

Один из способов - проверить jQuery, содержит ли определенный элемент (ваша кнопка добавления в корзину) определенный текст. Если это так, мы добавим дополнительный класс, с помощью которого вы можете стилизовать CSS.

: contains () Selector - Выбрать все элементы, содержащие указанный текст.

Итак, вы получаете:

function action_wp_footer() {
    ?>
    <script>
        jQuery(document).ready(function($) { var selector = '.add_to_cart_text:contains("Product in cart")'; // Selector contains specific text if ( $( selector ).length > 0 ) {
                $( selector ).addClass( 'product-is-added' ); } else { $( selector ).removeClass( 'product-is-added' );            
            }
            
        });
    </script>
    <?php
}
add_action( 'wp_footer', 'action_wp_footer' );

Примечание . Селектор (класс) может называться по-разному в зависимости от используемой темы.