Cómo personalizar la visualización tanto para archivos de WooCommerce como para páginas de categorías de productos
Hasta ahora
Hola, entiendo que mi pregunta está muy relacionada con una consulta común sobre 'woocommerce'.
He estado usando varios hooks, filtros de WooCommerce y creando copias de los archivos de plantilla originales de WooCommerce en mi tema hijo en una carpeta llamada woocommerce/.
Esto está funcionando y puedo hacer las ediciones que integran WooCommerce en mi tema.
Lo que estoy intentando hacer
WooCommerce usa archive-product.php para mostrar las categorías de productos. También usa esta plantilla para mostrar los productos de la categoría.
Me gustaría diseñar la página de productos de forma muy diferente a la página de categoría y crear otra plantilla de archivo que muestre los productos de una categoría
Estoy pensando que usar una nueva página de plantilla products-product.php sería mi mejor opción. Estoy muy interesado en aprender más sobre el plugin, por lo que estoy tratando de evitar soluciones rápidas con CSS y aprender a usar los archivos de plantilla y hooks.
Agradecería mucho cualquier consejo o indicación en la dirección correcta.

Generalmente, puedes indicarle a WordPress que cargue una plantilla diferente. Los enfoques más comunes utilizan los ganchos template_redirect
o template_include
. Es preferible usar template_include
como se describe en este artículo. A continuación, un ejemplo de cómo abordarlo:
Código:
// cargar la plantilla de archivo de categoría de WooCommerce
add_filter( 'template_include', 'wpse138858_woocommerce_category_archive_template' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {
// cargamos la plantilla condicionalmente,
// pero solo si estamos realmente en un archivo de categoría de WooCommerce
if ( is_product_category() ) {
// primero debes crear la plantilla que deseas usar aquí
return get_template_directory().'/woocommerce-category-archive.php';
} else {
return $original_template;
}
}
Información adicional:
Notas:
- No probado
- Puede haber una forma más específica de hacer esto para/con WooCommerce, dependiendo de cómo manejen la carga de plantillas. Para eso, debes ampliar tu investigación y/o adentrarte en el código de WooCommerce.
Edición:
Lo que estás buscando - si deseas hacerlo al estilo WooCommerce - es la función wc_get_template_part()
- anteriormente, antes de WC 2.1, woocommerce_get_template_part()
, ahora obsoleta. He dado una respuesta sobre cómo usar la última hace algún tiempo, puedes hacerlo para la función recién nombrada - la funcionalidad es la misma - de manera correspondiente. La respuesta, por supuesto, se refiere al uso directo de la función; en tu caso probablemente quieras y debas hacer uso del gancho correspondiente wc_get_template_part
. Con esta información en mano, deberías poder hacer esto al estilo WooCommerce.

Gracias por tu consejo. Todavía estoy en la misión de encontrar una solución más específica para WooCommerce, pero esto funcionaría. Gracias de nuevo @ialocin

Como dice @RobertWilkins: »Este código funcionó perfectamente para mí y puso fin a varias horas de quebraderos de cabeza... ¡Muchas gracias!!!«
