Mostrar una página en lugar del listado de artículos de una categoría en Genesis

[…]


por

Hoy vamos a ver cómo mostrar el contenido de una página en lugar del listado de artículos de una categoría en concreto para Genesis Framework.

Por ejemplo, tenemos una categoría en nuestro blog que se llama ‘desarrollo web’, cuyo ‘slug‘ es desarrollo-web, y hemos creado una página con el mismo título y slug.

Si visualizamos la página, veremos que automáticamente lo que carga es el listado de posts, no el contenido de la página.

listado posts genesis

 

 

Si lo que necesitamos es que, en lugar del listado de posts, se muestre el contenido de la página del mismo nombre, deberemos crear una plantilla de categoría y sustituir el loop estandar de génesis por uno propio que tome el contenido de esa página:

 

1- Creamos una plantilla en nuestro child theme de Genesis con el nombre «category-slug.php». En nuestro ejemplo, hemos creado el archivo «category-desarrollo-web.php»

2- Editamos el archivo e indicamos que elimine el loop estándar y lo sustituya por una función propia y que oculte el título de la categoría:

remove_action( 'genesis_loop', 'genesis_do_loop' );
add_action( 'genesis_loop', 'child_do_custom_loop' );
remove_action( 'genesis_before_loop', 'genesis_do_taxonomy_title_description', 15 );
3- Creamos la función donde buscaremos la página que tiene el mismo slug y mostraremos su contenido:
function child_do_custom_loop(){
$category = get_category(get_query_var('cat'));
$page = get_page_by_path($category->slug);
    echo "

".$page->post_title."

";     $content_post = get_post($page);     $content = $content_post->post_content;     $content = apply_filters('the_content', $content);     $content = str_replace(']]>', ']]>', $content);     echo $content; }
En este ejemplo sencillo hemos cargado el título de la página en un h1 y el contenido, pero podemos maquetarla como nos parezca mejor.
4- Al final del archivo, como en cualquier plantilla para Genesis, añadiremos la función para que siga cargando el framework:
genesis();
El resultado es que al ir a la categoría de posts desde cualquier enlace nos mostrará el contenido de la página en lugar del listado de posts:
contenido personalizado categoria

A partir de aquí podríamos modificarlo según nuestras necesidades, también podríamos añadir al final del contenido de la página el listado de posts de la categoría o algunos en concreto.

¿Eres implementador o desarrollador WordPress?

En la Zona DPW encontrarás más recursos, tutoriales, plantillas, y una biblioteca de snippets para poder utilizar en tu día a día y ganar tiempo en tu trabajo:

ACCEDER AHORA

Comentarios

20 respuestas a «Mostrar una página en lugar del listado de artículos de una categoría en Genesis»

  1. Avatar de Depiladoras

    |

    Olé olé olé!!!! que machine Esther! jajaja creo que le has dado en el clavo! muchas gracias!

    Tengo que ir creando «category-slug» por cada categoria que tengo y ya esta. Lo que he visto que ahora las paginas las trata como «categorias» no como paginas. no?

    Mas que nada prque tenia el plugin de «tabla de contenidos» que lo generaba con el TOC+ y ahora esa tabla de contenidos, que anteriormente si aparecia en la pagina, ahora al hacer esto de la category_slug no aparecen.

    Es más. para editar el formato de «Layout Settings» -> «Choose Layout» de la pagina, he tenido que hacerlo editando la categoria (WP-admin/Entradas->Categorias), no cogía la configuración que tenia en la «pagina».

    ¿Puede ser posible? Como se tendría que tratar para que volviera a salir el indice de cotenidos en las páginas correspondientes?

    1. Avatar de esther

      |

      Hola!
      Si, haciéndolo de esta forma, lo que se está mostrando es la categoría, pero con el contenido de la página, por eso el layout manda el de la categoría y no te muestra el TOC+.

      Para que te la muestre, puedes añadir en el código de la plantilla la instrucción siguiente:

      echo '
        '.toc_get_index( $content_post->post_content ).'
      ';

      Si lo que necesitas es que se mantenga como página, puedes probar la otra forma que comentábamos, y es crear una redirección en .htaccess de la url de la categoría a la url de la página (tendrán que ser diferentes).

      Saludos!

      1. Avatar de depiladoras

        |

        Gracias por la ayuda, pero creo que:
        echo ».toc_get_index( $content_post->post_content ).»;
        no funcionando en la categoria, sigue sin mostrarlo.

        nota: lo he puesto asi en el archivo de la category-slug

        remove_action( ‘genesis_loop’, ‘genesis_do_loop’ );
        add_action( ‘genesis_loop’, ‘child_do_custom_loop’ );
        remove_action( ‘genesis_before_loop’, ‘genesis_do_taxonomy_title_description’, 15 );
        echo ».toc_get_index( $content_post->post_content ).»;

        genesis();

        1. Avatar de depiladoras

          |

          Lo pongo aquí, el código que nos ha facilitado Esther, se tiene que colocar en «funcions.php» no en category-slug aunque no sale la configuración que tengas del TOC+ sino que lo muestra todo tal cual.
          Si encuentro algo de como hacerlo, ya lo pondré aquí.

          lo dicho, muchas gracias Esther por tu ayuda.

        2. Avatar de esther

          |

          Hola!
          Sí, como siempre, hay diferentes formas de conseguir lo mismo, lo importante es que nos funcione 😉
          A mi si que me funciona en el archivo de category-slug, pero poniéndolo dentro de la función del custom loop:

          function child_do_custom_loop(){
          $category = get_category(get_query_var('cat'));
          $page = get_page_by_path($category->slug); 
          	echo "

          ".$page->post_title."

          "; $content_post = get_post($page); $content = $content_post->post_content; $content = apply_filters('the_content', $content); echo '
            ' . toc_get_index( $content_post->post_content ) . '
          '; echo $content; }

          Saludos!

          1. Avatar de depiladoras

            |

            🙂 que rápida! de mostrarlo lo muestra. pero en mi caso, ni coje el formato de «mostrar/ocultar» ni funciona las anclas del indice.

  2. Avatar de Depiladoras

    |

    Perdona otra vez. tambén he visto que los comentarios, tampoco aparecen en la «página».

  3. Avatar de Ana

    |

    Hola de nuevo Esther. he estado probado a ver la forma de mostrar tanto el TOC+ como los comentarios en ese formato y no tengo forma de hacerlo funcionar.

    Incl, he copiado los div que lo contienen poniendolo en el archivo de funciones que me has comentado, pero o bien hago algo mal. o no tengo forma de mostrarlo.

    ¿A ti te funcionaba cuando lo probaste?

    1. Avatar de esther

      |

      Hola Ana!
      Yo no lo probé en el functions.php, sino en el archivo de plantilla, y me mostraba la tabla pero sin formato, como me indicaste. No he tenido tiempo de volver a probar más! Si tengo un rato para mirar de que salga con formato te lo digo, pero yo probaría intentando mostrar shortcode de TOC+

      Saludos!

      1. Avatar de Ana

        |

        Buenas de nuevo Esther! me rindo. jeje he probado y rebuscado, y no consigo hacer que funcione ni el dichoso toc, ni que salgan los comentarios en la «categoría» ni arreglar el breadcum Estás en:Inicio / Archives for depiladoras eléctricas. Todo o demás ya esta, creo, que funcionando. bién. Me tiene buscando y buscando sin exito de momento. en fin muchas gracias por todo.

        1. Avatar de esther

          |

          Hola Ana! Y no te sería más fácil hacer una redirección desde la url de la categoría a la página que quieres que aparezca? Así no te lías con código y plantillas…
          Saludos!

          1. Avatar de ana

            |

            Hola de nuevo! Pues si te digo la verdad no sabría hacer esta redirección. Y a nivel de posicionar la pagina daría igual?

  4. Avatar de Ana

    |

    Hola, he encontrado esto que creo que puede servir para llevar el formato y hacer que funcione, verdad? dublue.com/plugins/toc/#For_developers

    un saludo y buen finde!

    1. Avatar de esther

      |

      Hola Ana!
      Síii, creo que esto servirá. ¿Lo has probado?

      Saludos y gracias!!

  5. Avatar de Ana

    |

    Hola! pues si te digo la verdad, no se que puedo probar ahi.. he puesto esos ejemplos ( los codigos ) en el funciones.php pero no noto diferencia. y nose que probar más..

    1. Avatar de esther

      |

      Hola Ana! Aquí en comentarios es complicado aclarar todo lo que hemos comentado. En cuanto pueda preparo un artículo recopilando y explicando cómo lo haría yo.

      Saludos!

      1. Avatar de Ana depiladoras

        |

        Genial, lo espero porque estoy estancada ya. Muchas gracias.

  6. Avatar de Ana

    |

    Hola Esther, antes de nada felices fiestas! Jeeje me podrás avisar cuando puedas hacer el post como harias tu, lo que me gustaria hacer yo. Muchas gracias!

    1. Avatar de esther

      |

      Hola Ana! Felices Fiestas! No me olvido de ti… estoy preparando el lanzamiento en próximas fechas de la Zona Premium y me ha sido imposible preparar el tutorial, pero en cuanto pueda lo preparo.

      Saludos!

  7. Avatar de Ana

    |

    Gracias Esther! un saludo!