Mostrar entradas de una categoría en una página

16 mar 2012, 22:35:41
Vistas: 40.5K
Votos: 2

Me gustaría poder mostrar todas las entradas de una determinada categoría en una página, de manera que todas las entradas estén en esa única página y no haya paginación.

Si es posible, también me gustaría mostrar una vista previa corta de las entradas - todas las entradas tendrán una miniatura y un párrafo corto al inicio.

He probado varios plugins diferentes, pero hasta ahora ninguno de los que he encontrado hace el trabajo.

¿Alguien conoce algún plugin o forma de hacer esto? Alternativamente, modificar las páginas de categoría predeterminadas para que no haya paginación es una opción si todo lo demás falla...

// Código para mostrar todas las entradas de una categoría sin paginación
$args = array(
    'category_name' => 'nombre-categoria',
    'posts_per_page' => -1, // Muestra todas las entradas
    'post_status' => 'publish'
);

$query = new WP_Query($args);

if ($query->have_posts()) :
    while ($query->have_posts()) : $query->the_post();
        // Muestra la miniatura
        if (has_post_thumbnail()) {
            the_post_thumbnail('thumbnail');
        }
        // Muestra el título
        the_title('<h2>', '</h2>');
        // Muestra el extracto
        the_excerpt();
    endwhile;
    wp_reset_postdata();
endif;
0
Todas las respuestas a la pregunta 2
1

La forma en que lo haría:

Primero - crea una página en el administrador de WordPress. Luego crea un archivo como mi-pagina.php. Guárdalo en tu tema y al inicio del archivo, añade esto para indicarle a WordPress que es una plantilla personalizada:

<?php /* Template Name: PaginaPersonalizada */ get_header(); ?>

Nota: también llamará automáticamente tu cabecera (header).

Luego inserta un loop personalizado usando get_posts() de esta forma:

<?php global $post; // requerido
$args = array('category' => 9); // incluye la categoría 9
$custom_posts = get_posts($args);
foreach($custom_posts as $post) : setup_postdata($post);

// coloca aquí lo que quieres que aparezca para cada entrada como:
// el título:
the_title();

// un extracto:
the_excerpt();

// y así sucesivamente...    

endforeach;
?>

Finalmente, regresa al administrador y en las opciones de tu página deberías tener un menú desplegable en el cuadro "Atributos de página". Selecciona la plantilla "PaginaPersonalizada" o el nombre que le hayas dado.

16 mar 2012 22:53:00
Comentarios

Disculpa la demora en responder, y gracias por el código. Sin embargo, por alguna razón no funcionó para mí al principio y de todos modos, parecía un poco tedioso tener que crear páginas y seleccionar la plantilla que tengo, así que encontré una solución que funciona con las páginas de categoría existentes (mira mi respuesta)... Gracias de nuevo de todos modos

Andy Andy
17 mar 2012 23:25:55
0

Finalmente encontré una solución con un plugin para mi segunda opción. Ahora estoy usando Posts por categoría y lo configuré con un número muy alto para que todos los posts de la categoría se muestren en una sola página; ¡resulta que eso era todo lo que necesitaba!

Gracias y saludos

17 mar 2012 23:31:27