Mostrar las entradas en orden alfabético en el loop de WordPress

Por defecto, el loop de WordPress mostrará tus entradas del blog en modo cronológicamente inverso, de modo que tu última entrada se mostrará más arriba que las anteriores, pero en ocasiones puede ser interesante saltarse esta convención y mostrarlas alfabéticamente.

Ya sea para crear un índice alfabético en el que cada entrada es una de las definiciones, o un glosario, o cualquier tipo de publicación que requiera que las entradas se muestren alfabéticamente, es una opción a tener en cuenta para el día que quieras usar esta posibilidad en algún proyecto.

Archivo de categorías en orden alfabético

Un ejemplo sería mostrar alguna categoría concreta en orden alfabético. Para ello deberíamos editar el archivo de la plantilla de las categorías, normalmente category.php, y añadir algo antes del loop de este modo:

<?php
get_header();
?>
<div id="content">
<ul>
<?php
// añadimos esto para mostrar todas las entradas
// de la categoría Glosario ordenadas alfabéticamente
if (is_category('Glosario')) 
{
$args = array( 'posts_per_page' => -1, 'orderby'=> 'title', 'order' => 'ASC' );
$glosarioposts = get_posts( $args ); 
}
foreach( $glosarioposts as $post ) :	setup_postdata($post); 
 ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>

Portada en orden alfabético

Por otra parte, si lo que quieres es mostrar el loop de la portada en orden alfabético en vez de cronológicamente inverso, en este caso lo que haremos será modificar las peticiones principales de WordPress (pre_get_posts y is_main_query).

Pero en este caso no hace falta editar el archivo con el loop de portada sino que es mejor hacerlo forzando la modificación desde un archivo de funciones, ya sea un plugin propio o el archivo functions.php del tema activo.

Lo logramos añadiendo esto al elegido:

function ayudawp_modify_query_order( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'orderby', 'title' );
        $query->set( 'order', 'ASC' );
    }
}
add_action( 'pre_get_posts', 'ayudawp_modify_query_order' );

Esta función editará la petición principal antes de que se ejecute, y se asegurará de que en cualquier lugar en el que se reclame la petición principal de las entradas, como por ejemplo en index.php, las entradas se muestren alfabéticamente.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 4.8 / 5. Total de votos: 5

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

4 comentarios en “Mostrar las entradas en orden alfabético en el loop de WordPress”

  1. Me parece interesante la resolución y la idea. Si quisieramos que fuera en una página específica, solo deberíamos sustitur el $query->is_home() por $query->is_page( ‘Novedades’ ) sería correcto?

      1. Yo no se por que a mi no me funciona, pongo el código en el archivo functions.php actualizo pero nada, las entradas siguen desordenadas. Quiero que se ordenen generalmente por alfabeto por los títulos. Estoy usando wordpress seventeen 4.9.8

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba
Ir al contenido