Seguramente te ha surgido este problema alguna vez. Para una categoría en concreto quieres cambiar el número de artículos que se muestran. En mi caso la intención era aumentar este número.
Para ello hay que modificar un fichero de nuestro tema: el archivo de funciones personalizadas, por defecto, functions.php
Añadimos al fichero functions.php lo siguiente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
/* * Personalización del número de posts o artículos por página de una categoría. * Capacidad de añadir que se ignoren algunos artículos iniciales */ function myprefix_query_offset(&$query) { //Antes de nada, asegúrate de trabajar con la consulta correcta //En este caso estamos trabajando con los artículos de la categoría 38 if ( ! $query->is_category('38') ) { return; } //Define el artículo por el que vas a empezar. 0 es el primero, 1 el segundo... $offset = 0; //Ahora, escribe cuantos artículos quieres ver por página $ppp = 10; //Comprobamos si estamos en una página distinta a la primera if ( $query->is_paged ) { //Si estamos en la segunda página o siguientes definimos el artículo por el que debemos empezar como: El número de artículos que hemos decidido saltarnos al principio más el producto del número de página donde estamos menos 1 por el número de artículos por página. $page_offset = $offset + ( ($query->query_vars['paged']-1) * $ppp ); //Aplicamos estos ajustes a la consulta. Tanto el número de artículo por el que empezar como los artículos por página $query->set('offset', $page_offset ); $query->set('posts_per_page', $ppp ); } else { //Esta es la primera página. Aplicamos el valor del artículo por que empezar con el que tu has definido al principio. También definimos el número de artículos por página $query->set('offset',$offset); $query->set('posts_per_page', $ppp ); } } add_action('pre_get_posts', 'myprefix_query_offset', 1 ); /* * Función que permite ajustar correctamente * el número de páginas a mostrar */ function myprefix_adjust_offset_pagination($found_posts, $query) { //Escribe otra vez el número de artículo por el que empezar $offset = 0; //Asegúrate de que aplicas esto sobre el tipo de artículo correcto. if ( $query->is_category('38') ) { //Restamos al número de artículos encontrados //el del artículo por el que empezar return $found_posts - $offset; } //Si no es nuestro caso particular dejamos todo como estaba return $found_posts; } add_filter('found_posts', 'myprefix_adjust_offset_pagination', 1, 2 ); |
Código modificado a partir del que podemos encontrar en: Making Custom Queries using Offset and Pagination :: Codex de WordPress
Si además quieres cambiar la presentación de los artículos para esa categoría lo que tienes que hacer es cambiar la parte del loop/bucle de archive.php o del fichero que se encarga de mostrar las categorías en tu tema de wordpress:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php /*Start the loop */ while ( have_posts() ) : the_post(); /* Include the Post-Format-specific template for the content. * If you want to override this in a child theme, then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ if ( is_category('38') ) : ?> <div id="categoria38"> <article id="post-<?php the_ID(); ?>" <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a> <a href="<?php the_permalink(); ?>" rel="bookmark">Leer+</a> <?php echo get_the_date(); ?> </div> <?php else : get_template_part( 'content', get_post_format() ); endif; endwhile; // Previous/next page navigation. twentyfourteen_paging_nav(); |
Esta parte la dejo en su idioma original (Inglés) para aquellos que quieran saber donde hay que introducir el condicional que permite cambiar el formato con el que se muestran los artículos en el listado que crea archive.
Espero que os sea de utilidad.
Saludos.