Es posible que tu tienda Woocommerce venda servicios, productos o cualquier otra variación, y que el clásico mensaje «Añadir al carrito» no sea el adecuado.
Si lo único que quieres es cambiar ese mensaje en todos los botones de la tienda, es sencillo, símplemente añade el fragmento de código siguiente para Cambiar el botón «Añadir al carrito» por otro.
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' ); // 2.1 +
function woo_custom_cart_button_text() {
return __( 'Pagar', 'woocommerce' );
}
Si no sabes como insertar este código en tu web, puedes usar el pluguin Code Snippets y no tener que tocar el archivo functions de tu web.
¿No sabes como funciona? te lo explico aquí.
No olvides limpiar la caché de tu web si no ves que se aplican los cambios.
Buenas prácticas al usar Code Snippets
Para evitar problemas, ten en cuenta:
- Nombra bien cada snippet
- Añade una descripción clara
- No actives snippets sin probar
- Evita duplicar funciones
- Haz copias de seguridad antes de cambios importantes
Un paso más para cambiar el botón "Añadir al carrito"
Ahora vamos a ver otro caso un poco mas complejo donde el snippet anterior se nos puede quedar corto, una tienda online donde quieres que los botones de cierta categoría, o los productos variables, o simplemente un producto concreto tenga un botón distinto.
Te pongo el ejemplo que me ha hecho crear esta entrada de blog: vendo un servicio en el que se dan 15 días de prueba gratuita, y quiero que el botón de compra indique una llamada a la acción como «Prueba 15 días Gratis» pero sólo en ese producto.
Para ello vamos a usar el snippet siguiente, en el que sólo se filtra por la condición de la IP del producto (en mi caso el producto 12377), y en el resto de productos quiero que ponga «Pagar».
add_filter('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text', 10, 2);
function woo_custom_cart_button_text($text, $product) {
if (!$product || !is_a($product, 'WC_Product')) {
return $text;
}
$product_id = $product->get_id();
// Por ID de producto
if ($product_id == 12377) {
return 'Prueba 15 días gratis';
}
// Texto por defecto (tu "Pagar")
return 'Pagar';
}
Adáptalo a lo que tu necesites
Puede que tu quieras que el texto de los botones sea otro en función de la categoría, del slug o de otra condición, aquí te dejo la solución para que lo hagas a tu gusto:
add_filter('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text', 10, 2);
function woo_custom_cart_button_text($text, $product) {
if (!$product || !is_a($product, 'WC_Product')) {
return $text;
}
$product_id = $product->get_id();
// Por ID de producto
if ($product_id == 123) {
return 'Reservar ahora';
}
if ($product_id == 456) {
return 'Solicitar presupuesto';
}
// Por slug
if ($product->get_slug() === 'pagina-web') {
return 'Contratar ahora';
}
// Por categoría
if (has_term('servicios', 'product_cat', $product_id)) {
return 'Empezar proyecto';
}
// Producto variable
if ($product->is_type('variable')) {
return 'Elegir opciones';
}
// Texto por defecto (tu "Pagar")
return 'Pagar';
}