Cambie el texto Agregar al carrito para una categoría de producto específica en Woocommerce 3

Quiero cambiar el texto de agregar al carrito en los archivos de productos en categorías específicas solamente. Por ejemplo, en la categoría de preorden que quiero, en lugar de add to cart texto del add to cart , es Preorder . No sé cómo identificar la categoría de Preorder en la siguiente función.

 add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' ); // < 2.1 function woo_archive_custom_cart_button_text() { return __( 'Preorder', 'woocommerce' ); } 

Actualización: add_to_cart_text hook está obsoleto y en desuso. Se reemplaza en Woocommerce 3+ por woocommerce_product_add_to_cart_text filter hook.

Pueden ser 2 cosas diferentes (ya que su pregunta no es tan clara)

1) Para orientar productos en una página de archivo de categoría de producto específica , debe utilizar la función condicional is_product_category() esta manera:

 add_filter( 'woocommerce_product_add_to_cart_text', 'product_cat_add_to_cart_button_text', 20, 1 ); function product_cat_add_to_cart_button_text( $text ) { // Only for a specific product category archive pages if( is_product_category( array('preorder') ) ) $text = __( 'Preorder', 'woocommerce' ); return $text; } 

El código va en el archivo function.php del tema secundario activo (o tema activo).


2) Para seleccionar una categoría de producto específica en las páginas de archivos de Woocommerce que usará has term() esta manera:

 add_filter( 'woocommerce_product_add_to_cart_text', 'product_cat_add_to_cart_button_text', 20, 1 ); function product_cat_add_to_cart_button_text( $text ) { // Only for a specific product category if( has_term( array('preorder'), 'product_cat' ) ) $text = __( 'Preorder', 'woocommerce' ); return $text; } 

Para páginas de un solo producto usarás adicionalmente esto:

 add_filter( 'woocommerce_product_single_add_to_cart_text', 'product_cat_single_add_to_cart_button_text', 20, 1 ); function product_cat_single_add_to_cart_button_text( $text ) { // Only for a specific product category if( has_term( array('preorder'), 'product_cat' ) ) $text = __( 'Preorder', 'woocommerce' ); return $text; } 

El código va en el archivo function.php del tema secundario activo (o tema activo).

Probado y funciona.

Nota: Todas las funciones enganchadas del filtro deben devolver el argumento principal si establece algunas condiciones, por lo que en este caso el argumento $text


Respuesta relacionada: Dirigir los términos del producto desde una taxonomía personalizada en WooCommerce

Documentos relacionados: Woocommerce Conditional Tags

Puedes usar has_term () con la condición. El código actualizado es el siguiente.

Solución- 1. Usando el filtro add_to_cart_text

  add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' ); function woo_archive_custom_cart_button_text() { global $product; if(has_term('your-special-category', 'product_cat', $product->get_id())){ $text = __( 'Preorder', 'woocommerce' ); } return $text; } 

Solución- 2. Uso del filtro woocommerce_product_add_to_cart_text

  add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' ); function woo_archive_custom_cart_button_text() { global $product; if(has_term('your-special-category', 'product_cat', $product->get_id())){ $text = __( 'Preorder', 'woocommerce' ); } return $text; } 

donde your-special-category agregará a la categoría por la que desea reemplazar el texto del add to cart .