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.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(5 votos, promedio: 4.8)

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

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. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido