comparte el articulo 

Limitar el número de post en WordPress sin plugin

Actualizado el 09/10/2013 < > 13 Cometarios

Estoy desarrollando un theme de WordPress para un proyecto que tengo y quería limitar el número de post que se muestran por defecto en la home (index.php), en las categorías (category.php) y en los archivos de entradas (archive.php). La idea es mostrar diferentes post para el index, las categorías y las páginas de archivo.

Como algunos sabréis se puede determinar el número de post que se muestran a nivel global desde el panel de control de WordPress, entrando en Opciones > Lectura. El problema de esto es que WordPress no te permite establecer de forma diferenciada cuántos post se muestran en la home, en las categorías, etc. lo cual le resta flexibilidad al diseño que estés desarrollando.

Para paliar este problema hay plugins bastante conocidos, como different post per page. Pero particularmente cada día más estoy intentando prescindir de plugins a cambio de hacer ciertas cosas manualmente, entre ellas limitar los post por categorías, por aquello de no saturar de plugins innnecesarios lo que se puede hacer de forma más simple.

Limitar el número de post en WordPress sin plugin

Para ello, he revisado algunos códigos que hay disponibles en la red y la mayoría no me han funcionado. Finalmente encontré un artículo en inglés (Two Ways to Limit the Number of Posts without a Plugin) que me dio la solución, además que es un código limpio y ligero, lo que le da una clara ventaja con respecto a usar plugins para estas cosas (tendré que implementarlo en el rediseño de lawebera.es que estoy desarrollando).

Lo que he hecho es sustituir este código:

<?php while (have_posts()) : the_post(); ?>

Por este otro:

<?php $i = 1; while (have_posts() && $i < 6) : the_post(); ?>

Donde < 6) puede modificarse para mostrar el número de entradas que se desee, en este caso mostramos 5.

También hay que modificar el endwhile correspondiente:

<?php endwhile; ?>

Por este otro:

<?php $i++; endwhile; ?>

En resúmen, tu código debe quedar algo parecido a esto:

<?php $i = 1; while (have_posts() && $i < 6) : the_post(); ?>

	<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>

	<p>?php the_time(); ?></p>
	<?php the_content(); ?>
	<p><?php the_tags(); ?></p>

<?php $i++; endwhile; ?>

	<p><?php next_posts_link(); ?></p>
	<p><?php previous_posts_link(); ?></p>

<?php else : ?>

	<h1>Not Found</h1>
	<p>Silly monkey.</p>

<?php endif; ?>

Este código se puede introducir en cualquier página que liste varios post a la vez, como index.php, category.php (y las plantillas personalizadas que tengas) o archive.php.

Publicado el 30/07/2010, última actualización 09/10/2013.

Licencia: Eres libre de distribuir este artículo siempre que mantengas los enlaces dentro del mismo intactos y des los créditos al autor.

Autor: Verónica Milán

URL: lawebera

Añadir Comentario (Subir al texto)

13 Cometarios

  1. diseño web valencia

    ¿ya estás trabajando en el rediseño de la webera? No paras quieta, eh?

    Lunes, 2 de agosto 2010

  2. Verónica Milán

    jejeje no paro Angel, no sabes bien. Entre proyectos de clientes y los míos propios agosto se presenta como un septiembre más xDD pero que no falten las ganas de mejorar y el trabajo… aunque el rediseño tardará un tiempo, estoy en ello que ya toca.

    Martes, 3 de agosto 2010

  3. Proyectos Web

    A nuestro parecer, cuando un CMS no contiene las suficientes opciones necesarias para un determinado Proyecto Web, también existe la posibilidad de desarrollar un CMS propio, bien sea de forma particular o en equipo. Esto hace mucho más flexible las posibilidades de cambios e introducción de nuevos contenidos y/o opciones para el usuario; junto con un Diseño mucho más personalizado y atractivo a la medida necesaria para el Proyecto Web.

    Miércoles, 4 de agosto 2010

  4. Sergio

    No estoy de acuerdo con Proyectos Web. WordPress es software libre con una gigantesca comunidad de desarrolladores detrás, créeme que se puede hacer de todo con él, desde blogs simples hasta tiendas online y portales corporativos complejos. No es que hagas un CMS en grupo, no, es que hay cientos y miles de personas revisando su código cada día en busca de mejorarlo y añadirle nuevas funciones. PAra mí no hay mejor garantía que sea.

    Al igual que se puede desarrollar un CMS totalmente a medida, se pueden desarrollar plugins o módulos para WordPress que complementen aquello que necesitas y no tenga (más bien no encuentras, porque tener tiene de todo).

    Yo soy partidario del software libre, si el desarrollador conoce el CMS con el que trabaja al cliente le sale mucho más económico usar un CMS tipo WordPress o Magento, y los tiempos de desarrollo son menores. Si conoces el CMS, puedes hacer maravillas con él.

    El coste de desarrollar una aplicación a medida y desde cero para la mayoría de clientes es simplemente imposible de asumir. Puede triplicar el mismo proyecto hecho con un CMS prefabricado como WordPress.

    En cuanto al diseño más personalizado con CMS a medida, mentira, WordPress te permite hacer lo que quieras con el diseño, por algo tiene las plantillas y separa estructura (html y css) de código php. Quien dice que es menos flexible no conoce la aplicación.
    Y la publicación de contenidos es terríblemente fácil, tener en cuenta que se trata de un CMS que inicialmente se pensó para publicación de blogs, su centro es el contenido y facilitan su generación al máximo.

    Miércoles, 4 de agosto 2010

  5. Pedro

    Gracias man!! me re sirvió! es justo lo q buscaba y qué simple q era!

    Viernes, 6 de agosto 2010

  6. Nicolás

    Funciona Perfecto!!
    Muchas gracias Sr.!

    Miércoles, 27 de julio 2011

  7. FER

    Funciona Perfecto. Muchas gracias por el post.

    Jueves, 21 de junio 2012

  8. Dani

    Vale, funciona, pero no sólo para página principal… al menos en el theme Pinboard.

    Trastoca todos los loops, tendré que buscar otra solución :(

    Lunes, 15 de octubre 2012

  9. valentin

    Muy bueno. intuitivo y útil.

    Viernes, 21 de diciembre 2012

  10. Marcelo

    Muchas gracias por el código
    Funciona de mil maravillas
    Fácil y limpio, y muy personalizable

    Martes, 27 de agosto 2013

  11. arkangel747

    aja y en el caso de q quiera q los otros post apartir del 6 se muestren como haria
    si quiero q en esa pagina donde me muestra los post quiero que me muestra 5 post y los otros los quiero mostrar como una paginacion como hago? q salga la opcion como si fuera pagenavi no se si me explico

    Miércoles, 18 de diciembre 2013

  12. Oscar

    Me pasaba lo mismo, ningún plugin me funcionaba, por más estrellas que tuviera etc… Quería evitar meter mano a php, pero esta solución es muy sencilla y me ha funcionado a la primera.

    Por otro lado, no entiendo cómo WordPress no tiene una gestión mejor para algo tan fundamental.

    En cualquier caso, muchas gracias!

    Domingo, 18 de mayo 2014

  13. Cristian Leal

    Hola, esta genial el código y funciona de maravillas, el problema es que utiliza la misma función para listar resultados de categorías y etiquetas. Saludos

    Miércoles, 4 de febrero 2015

(Subir al texto)

Añadir Comentario

* Campos obligatorios

Meneame Bitacoras