En estos días he estado muchas horas adelante de archivos PHP y CSS trabajando en algunos themes para WordPress, para los cuales he tenido que hacer algunas modificaciones en las llamadas a los posts. Quería aprovechar para mostrarles como aplicar algunos condicionales al loop de WordPress para obtener ciertos resultados que pueden sernos útiles.

Lo primero que quiero explicarles es como excluir alguna categoría específica del loop, es decir, que al cargar por ejemplo en el index, se excluyan los posts pertenecientes a una categoría específica. Esto puede sernos útil si utilizamos por ejemplo miniposts y los cargamos en la parte superior de la página, luego para que no vuelvan a aparecer entre los posts normales, excluímos esa categoría.

No quiero extenderme en los ejemplos, ya que ustedes sabrán mejor como utilizar esta opción. Pasemos al código, al cual, debajo de la llamada por defecto agregaremos <?php if (in_category('7')) continue; ?>, donde “7″ es el ID de la categoría que queremos excluir. Así, una llamada completa por defecto quedaría de la siguiente manera:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if (in_category('7')) continue; ?>
<div class="post">
<h2><a xhref="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_content(); ?></div>
<?php endwhile; else: ?>
No hubo resultados
<?php endif; ?>

En caso de que sean varias las categorías a excluir, la sintaxis debe ser la siguiente:

Otra opción, a la cual he tenido que recurrir, y que también quiero comentarles es la de poder incluir elementos o mensajes dependiendo de la página en la cual nos encontremos, es decir, si estamos en la primera de la paginación o en las demás.

Por ejemplo, queremos que en la portada de nuestro blog aparezca el mensaje "Bienvenido, este es mi blog.", pero que al pasar a la "Page 2", haciendo click en "Ver entradas antiguas", este mensaje desaparezca. Como dije antes, las utilidades son muchas y seguramente ustedes sabrán como aplicarlas.

Para esto, debemos realizar en index.php, category.php, archive.php o cualquier sección donde se realiza paginación de entradas, lo siguiente:

<?php if ( $paged < 2 ) { // Para la primera página ?>
Bienvenido, este es mi blog.
<?php } else { // Para las que no son la primera ?>
Estas navegando los posts antiguos.
<?php } ?>

Esto podemos cargarlo fuera del loop, aunque dependiendo de lo querramos hacer, podemos cargar los posts dentro de estos condicionales. Podemos modificar la cantidad de páginas en las que aparecerá cada mensaje cambiando el número, que en este caso es 2.