Agregar clase CSS al botón añadir al carrito, Woocommerce
Estoy buscando una manera de agregar una clase personalizada al botón de añadir al carrito en la página single-product.php en Woocommerce. He intentado lo siguiente sin ningún resultado:
- Copiar toda la carpeta woocommerce desde la carpeta "plugins" a "themes/MI-TEMA/woocommerce".
- Modificar el archivo "add-to-cart.php" en "themes/MI-TEMA/woocommerce/loop/add-to-cart.php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Salir si se accede directamente
}
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 MI-CLASE-DE-PRUEBA-AQUI' : '',
esc_attr( $product->product_type ),
esc_html( $product->add_to_cart_text() )
),
$product );
Aunque no puedo ver "MI-CLASE-DE-PRUEBA-AQUI" en el código fuente. ¿Qué estoy haciendo mal?

Como se explica en su documentación, WooCommerce proporciona una estructura de plantillas. Copiar WC en tu tema no te llevará a ninguna parte.
- Crea una carpeta
woocommerce
en tu tema. - Copia cualquier plantilla dentro de la carpeta
templates
de WC dentro de tu carpetawoocommerce
en el tema. Ten en cuenta que necesitas mantener la estructura de la carpetatemplates
intacta en tu carpetawoocommerce
del tema para que esto funcione. - Modifica las plantillas en la carpeta
woocommerce
de tu tema a tu gusto. Estas tienen prioridad de carga sobre las que están dentro de la carpetatemplates
del plugin.
Consejo: ¡no copies todas las plantillas del plugin dentro de tu tema! Solo las que quieras modificar. De vez en cuando, WC actualiza sus plantillas y añade funcionalidades. WooCommerce también te avisará cuando una plantilla que mantienes en tu tema podría tener una versión actualizada dentro del plugin, después de una actualización.
Y por cierto, sospecho que el voto negativo no fue por la pregunta en sí, sino por el título. Apuesto a que sabes cómo añadir una clase a un botón. Lo que no sabías era cómo usar el sistema de plantillas de WooCommerce. Porque no lo buscaste en Google, lo cual creo que (técnicamente) sabes hacer. Por favor, perdona mi toque de sarcasmo, era eso o otro voto negativo.

La forma más fácil que encontré (un poco hacky) es envolver el botón en una etiqueta span, agregar la clase al span y luego en tu css aplicar las propiedades al botón heredando del span:
<span class="my-nice-class">
<?php woocommerce_get_template( 'loop/add-to-cart.php' ); ?>
</span>
y luego en css:
.my-nice-class .button {
color: black;
}
