Добавление CSS класса к кнопке добавления в корзину в WooCommerce
Я ищу способ добавить пользовательский класс к кнопке добавления в корзину на странице single-product.php в WooCommerce. Я пробовал следующее, но безрезультатно:
- Скопировал папку woocommerce из директории "plugins" в "themes/MY-THEME/woocommerce".
- Изменил файл "add-to-cart.php" в "themes/MY-THEME/woocommerce/loop/add-to-cart.php"
if ( ! defined( 'ABSPATH' ) ) {
exit; // Выход, если доступ напрямую
}
global $product;
echo apply_filters( 'woocommerce_loop_add_to_cart_link',
sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="button %s product_type_%s">%s</a>',
esc_url( $product->add_to_cart_url() ),
esc_attr( $product->id ),
esc_attr( $product->get_sku() ),
esc_attr( isset( $quantity ) ? $quantity : 1 ),
$product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button MY-TEST-CLASS-HERE' : '',
esc_attr( $product->product_type ),
esc_html( $product->add_to_cart_text() )
),
$product );
Хотя я не вижу "MY-TEST-CLASS-HERE" в исходном коде. Что я делаю не так?

Как объясняется в их документации, WooCommerce предоставляет систему шаблонов. Простое копирование WC в вашу тему не даст результатов.
- Создайте папку
woocommerce
в вашей теме. - Скопируйте любой шаблон из папки
templates
WooCommerce в папкуwoocommerce
вашей темы. Учтите, что структура папкиtemplates
должна быть сохранена в папкеwoocommerce
для корректной работы. - Изменяйте шаблоны в папке
woocommerce
вашей темы по своему усмотрению. Они имеют приоритет загрузки над шаблонами в папкеtemplates
плагина.
Совет: не копируйте все шаблоны из плагина в вашу тему! Только те, которые вы хотите изменить. Периодически WooCommerce обновляет свои шаблоны и добавляет функциональность. WooCommerce также уведомит вас, если в плагине появится обновлённая версия шаблона, который вы храните в своей теме, после обновления.
И, кстати, я подозреваю, что минус был поставлен не за сам вопрос, а за его заголовок. Думаю, вы знаете, как добавить класс кнопке. Но вы не знали, как использовать систему шаблонов WooCommerce. Потому что вы не погуглили это, а я уверен, что (технически) вы умеете это делать. Простите за нотку сарказма — это был либо он, либо ещё один минус.

Самый простой способ, который я нашел (немного хакерский) — это обернуть кнопку в тег span, добавить класс к span, а затем в CSS применить свойства к кнопке, наследуя их от span:
<span class="my-nice-class">
<?php woocommerce_get_template( 'loop/add-to-cart.php' ); ?>
</span>
И затем в CSS:
.my-nice-class .button {
color: black;
}
