Cómo personalizar la visualización tanto para archivos de WooCommerce como para páginas de categorías de productos

22 mar 2014, 18:03:25
Vistas: 18.1K
Votos: 3

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.

9
Comentarios

¿Has probado un plugin de constructor de páginas? Puedes crear una página personalizada de archive-products y mostrar los productos como prefieras. Hay algunos constructores de páginas gratuitos que son muy buenos (como: http://siteorigin.com/page-builder/)

item251 item251
22 mar 2014 18:24:27

Esta pregunta ha sido puesta en espera por estar fuera de tema. ¿Alguien podría explicarme brevemente por qué? He descubierto una respuesta muy simple que es muy específica del plugin y no de codificación general. Veo muchas preguntas muy similares a esta en el sitio. Gracias.

JohnLion JohnLion
22 mar 2014 20:51:37

Tienes razón, hay muchas preguntas similares a esta que no se consideran fuera de tema, pero en general la regla es »no manejamos (..) preguntas sobre plugins y temas de terceros« como se indica en la página de ayuda sobre temas. Lo cual sería, dado que woocommerce es claramente un plugin de terceros, la razón para poner esto en espera. Por cierto, por favor no impulses tu pregunta haciendo ediciones irrelevantes/menores, solo para mantenerla en la cola.

Nicolai Grossherr Nicolai Grossherr
22 mar 2014 23:17:40

Me disculpo, la forma en que se implicó pensé que era más sobre cómo redacté la pregunta. ¿Podrías decirme si esta pregunta será eliminada? Creo que debería, considerando que no lleva a ninguna parte y las respuestas son engañosas respecto a la solución real. Gracias por explicarme lo de la pregunta. Ahora lo entiendo.

JohnLion JohnLion
22 mar 2014 23:39:38

Siempre puedes eliminar tus preguntas tú mismo borrándolas. No estoy 100% seguro de cómo se maneja si la pregunta permanece pero está en espera, creo que si hay respuestas permanecerá, al menos un tiempo. Pero, aunque no lo he probado, estoy bastante seguro de que mi primera respuesta es una solución suficiente para este problema. Por cierto, actualicé mi respuesta con información para ti sobre cómo hacerlo más específico para WooCommerce.

Nicolai Grossherr Nicolai Grossherr
22 mar 2014 23:47:04

Por cierto, lo siento si te he acusado erróneamente allí.

Nicolai Grossherr Nicolai Grossherr
22 mar 2014 23:59:12

Genial @ialocin, gracias por tomarte el tiempo de hacer eso. Descubrí que la página de categoría de producto se manejaba en taxonomy-product_cat.php. Básicamente llama a la plantilla archive-product.php. Así que simplemente cambié eso para cargar mi propia plantilla. Era uno de los pocos archivos que no había abierto. Estoy de acuerdo en que la solución que ofreciste es un método perfecto para hacer lo que quería y estoy seguro de que me ayudará en el futuro. Además de ser una introducción a template_include. No hay malos sentimientos en absoluto. Solo estoy aprendiendo a usar el foro correctamente y a ser parte de la comunidad de WordPress. ¡Saludos!

JohnLion JohnLion
24 mar 2014 01:43:50

Esta es una pregunta sobre WordPress que también aplica a los plugins de WP. La respuesta es código de WordPress. Hay mejores respuestas sobre WordPress disponibles, pero como fue cerrada, la comunidad no puede contribuir. ¿Qué se ganó con cerrarla?

Jon Jon
5 jun 2015 11:46:42

Esta política de fuera de tema es realmente molesta y francamente estúpida. WordPress es una plataforma de código abierto - hay muchas personas trabajando con WooCommerce. Cuando queremos modificarlo, romperlo, alterarlo o ampliarlo, StackExchange debería estar ahí para ayudarnos.

Dave Hilditch Dave Hilditch
9 sept 2015 19:20:18
Mostrar los 4 comentarios restantes
Todas las respuestas a la pregunta 1
3

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.

22 mar 2014 18:26:46
Comentarios

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

JohnLion JohnLion
22 mar 2014 19:27:05

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

Nicolai Grossherr Nicolai Grossherr
11 jun 2014 23:08:51

@RobertWilkins Gracias por eso, pero esto no es algo viable para una edición, así que lo agregué como comentario por ti.

Nicolai Grossherr Nicolai Grossherr
11 jun 2014 23:17:29