Hola,
Sino me equivoco tienes que usar el filtro woocommerce_loop_add_to_cart_link
para remplazar el link predeterminado por el link hacia el producto usando la condicional is_archive
o is_post_type_archive( 'product )
para evitar que lo remplaces en otros lugares.
Tambien seria importante que mirases si ese theme que usas ya modifica esa seccion.
Saludos
Iniciador del debate
rebu
(@rebu)
Muchas gracias por la orientación, lo que hice fue poner esto en functions y funciono perfecto:
add_filter( 'woocommerce_loop_add_to_cart_link', 'replacing_add_to_cart_button', 10, 2 );
function replacing_add_to_cart_button( $button, $product ) {
$button_text = __("VER MAS", "woocommerce");
$button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';
return $button;
}
Por si alguien le sirve.
Saludos.
-
Esta respuesta fue modificada hace 5 años por
rebu.
Hola,
Te lo he modificado un poco:
/**
* Replace default add to cart link inside of the loop
*
* @param string $link Current link.
* @param object $product WooCommerce Product class
* @param array $args Extra arguments
*
* @return string
*/
function unico_prefijo_wc_loop_add_to_cart_link( $link, $product, $args ) {
$text = esc_html__( 'ver más', 'tu_textdomain' );
$url = ( method_exists( $product, 'get_permalink' ) ? esc_url( $product->get_permalink() ) : '' );
$attrs = '';
// $attrs = isset( $args['attributes'] ) ? ' ' . wc_implode_html_attributes( $args['attributes'] ) : '' );
return sprintf( '<a class="button" href="%1$s"%2$s>%3$s</a>', $url, $attrs, $text );
}
add_filter( 'woocommerce_loop_add_to_cart_link', 'unico_prefijo_wc_loop_add_to_cart_link', 999, 3 );
Te comento:
Personalmente siempre en estos casos añado el action o filter despues de definir la funcion.
Añado el parametro $args
definido en el filtro predeterminado en ‘/plugins/woocommerce/templates/loop/add-to-cart.php’
Reemplaza ‘unico_prefijo’ por lo dice el texto e.g. ‘rebu_func’
Personalmente uso el mismo nombre del filtro para el nombre del metodo o funcion, asi es mas rapido identificarlo si por ejemplo defines la funcion en un archivo y el filtro en otro archivo.
Las variables son escapadas «WordPress Coding Standards»
En $text
mejor usa tu propio ‘Text Domain’, El domain ‘woocommerce’ no tiene ese texto, el texto esta en minusculas para prevenir que cuando se traduzca ese texto no lo pongan en mayusculas, te recomiendo que lo conviertes en mayusculas por css asi es mas facil su modificacion, desde mi punto de vista.
.button {
text-transform: uppercase;
}
En $url
primero compruebo que existe el metodo get_permalink
por si acaso la variable $product
no es un clase de WooCommerce Product. No mostraria ningun error PHP y la carga de la web seguiria sin problemas.
En $attr
como creo que no lo usas esta vacia igual que tampoco he añadido $args['class']
.
Si quieres descomenta la otra para permitir añadir los atributos.
Personalmete suelo usar sprintf
pero tu manera es totalmente valida, aunque es reconmendable llamar a la funcion antes para evitar que si esa funcion se retrasa el echo
no llegase a capturar el valor, pasa 1 de cada 1000000 pero pasa.
La prioridad del filtro es elevada para que sea el ultimo filtro asi nos aseguramos que se usa el contenido definido.
Espero que no te importe, y gracias por compartirlo para los demas usuarios.
Saludos!