Ordenar resultados por nombre y orden ascendente en Archive.php

23 ene 2012, 12:03:51
Vistas: 60.4K
Votos: 21

Actualmente uso el siguiente código para listar entradas en Archive.php pero quiero que los resultados estén ordenados por nombre en orden ascendente. He revisado el codex pero la respuesta no me queda clara, ¿cómo puedo hacer que esto funcione?

<?php $post = $posts[0]; // Asignación inicial del post ?>

Gracias de antemano.

The WP_Query parameters you need to add are: - orderby=title - order=ASC You can use:
<?php
$args = array(
    'orderby' => 'title',
    'order' => 'ASC'
);
$query = new WP_Query($args);
?>

O modificar la consulta existente agregando estos parámetros a los argumentos actuales.

1
Comentarios

si estás usando una consulta personalizada en tu archive.php, ¿podrías mostrarla? Tal vez publicar el archive.php completo en http://pastie.org y actualizar tu respuesta con el enlace?

Hameedullah Khan Hameedullah Khan
23 ene 2012 12:37:35
Todas las respuestas a la pregunta 3
5
54

La forma más fácil de hacer esto es usar un hook (el hook pre_get_posts) para cambiar el orden. ¡Pero debes verificar que la consulta sea una para la que deseas alterar el orden! (is_archive() o is_post_type_archive() deberían ser suficientes).

Por ejemplo, coloca lo siguiente en el functions.php de tu tema...

add_action( 'pre_get_posts', 'my_change_sort_order'); 
    function my_change_sort_order($query){
        if(is_archive()):
         //Si lo deseas para el archivo de un tipo de entrada personalizado usa: is_post_type_archive( $post_type )
           //Establece el orden ASC o DESC
           $query->set( 'order', 'ASC' );
           //Establece el orderby
           $query->set( 'orderby', 'title' );
        endif;    
    };
23 ene 2012 12:32:45
Comentarios

Hola, ¿podrías mostrar cómo funciona el orden predeterminado? Algunos enlaces si es posible. Gracias.

User User
8 sept 2019 00:34:36

@LatheeshVMVilla WordPress fue desarrollado como un blog, por lo que el orden predeterminado/lógico es por post_date DESC (descendente), mostrando primero las publicaciones más recientes. Si usas WP para algo donde el tiempo es menos relevante (la mayoría de tipos de listas, como tu colección de discos, recetas, un glosario,...) normalmente querrás ordenar por post_title ASC (ascendente, es decir, alfabéticamente por título con los números antes que las letras).

user3445853 user3445853
3 dic 2019 15:25:46

Gracias. Funciona bien para mi página de archivo de taxonomía.

Sema Hernández Sema Hernández
5 feb 2020 18:12:15

Funciónó perfectamente. ¡Gracias!

Mark P Mark P
17 jun 2020 21:59:29

Funcionó pero destruyó mi menú. Hay más consultas en la página de archivo, para cambiar solo la necesaria, lo logré con if(is_post_type_archive($post_type) && $query->query["post_type"]==$post_type)

Fanky Fanky
26 ago 2021 21:10:51
2
<?php
// Añadimos esto para mostrar todos los posts en nuestro
// Glosario ordenados alfabéticamente
if ( is_category('Glosario') )  {
    $args = array( 
        'posts_per_page' => -1,  // Mostrar todos los posts
        'orderby'        => 'title',  // Ordenar por título
        'order'          => 'ASC'    // Orden ascendente
    );
    $glossaryposts = get_posts( $args );
}
foreach( $glossaryposts as $post ) : setup_postdata( $post );
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
20 ene 2017 23:32:50
Comentarios

¿Puedes explicar por qué esto ayuda al OP? Por favor, siempre agrega una explicación antes de un fragmento de código. Gracias.

kaiser kaiser
21 ene 2017 01:12:09

La pregunta era Ordenar resultados por nombre y en orden ascendente en Archive.php. Presumiblemente, según quien respondió, este código ordenará los resultados por nombre y en orden ascendente en Archive.php?

Jon Jon
11 dic 2019 16:37:01
1

Además de la respuesta de Stephen, si solo deseas consultar y ordenar por el título, podrías usar esto en tu archivo de plantilla:

$args = ( array(
'order' => 'ASC',
'orderby' => 'title',
 ) );

query_posts($args);
23 ene 2012 13:38:34
Comentarios

Directamente de la referencia de código de WordPress - "Esta función anulará completamente la consulta principal y no está destinada para su uso por plugins o temas. Su enfoque excesivamente simplista para modificar la consulta principal puede ser problemático y debe evitarse siempre que sea posible. En la mayoría de los casos, existen opciones mejores y más eficientes para modificar la consulta principal, como a través de la acción 'pre_get_posts' dentro de WP_Query."

En resumen, @Stephen Harris tiene la forma correcta de lograr esto.

https://developer.wordpress.org/reference/functions/query_posts/

Michael Michael
13 oct 2016 17:33:30