query_posts no ordena por título

6 jun 2012, 12:42:45
Vistas: 50K
Votos: 4

Parece un error tonto, pero ¿cómo puedo ordenar por título? ¡De todas formas ordena por fecha! Estoy usando:

query_posts( array( 
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'orderby'        => 'title',
    'order'          => 'ASC'
) );

Quiero usar esto en una función como SHORTCODE. Lo que estoy tratando de lograr es crear un mapa del sitio / índice de todas las entradas en orden alfabético. También estoy usando la versión más reciente de WP.

7
Comentarios

¿Podemos ver un var_dump() o print_r() de la consulta generada? Además, un poco de contexto sobre este código sería útil. ¿Estás modificando la consulta del loop principal o ejecutando un loop secundario?

Chip Bennett Chip Bennett
6 jun 2012 18:26:07

Creé una función que funciona como shortcode, muestra todas las entradas como un Índice, digamos que muestra una letra y después de la letra todas las entradas que comienzan con esa letra, como un mapa del sitio. Publicaré el array en la Pregunta.

Tommixoft Tommixoft
6 jun 2012 19:36:10

Bueno, el array parecía ENORME y estaba ordenado por fecha, así que decidí no publicarlo aquí. No soy nuevo en php o wordpress, así que no creo que me esté perdiendo algo en el código. Te publiqué una versión simple de mi función.

Tommixoft Tommixoft
6 jun 2012 19:45:50

¿Estás usando esto como un SHORTCODE? Es decir, ¿lo estás ejecutando dentro del contenido de la entrada?

Chip Bennett Chip Bennett
6 jun 2012 19:51:09

Sí, pero estoy usando el shortcode en una página, además mi contenido está vacío, solo el shortcode. En cualquier caso, ¿qué puedo hacer? ¿Debería crear una plantilla y evitar el shortcode? También creo que debería reiniciar la consulta y hacer una nueva con la mía... entonces, ¿dónde está el problema? Estoy confundido.

Tommixoft Tommixoft
6 jun 2012 19:53:42

Una página es una entrada. Eso no hará ninguna diferencia. Hay tantas cosas mal con este enfoque que ni siquiera sé por dónde empezar, realmente. ¿Qué es lo que, en última instancia, estás tratando de lograr? Probablemente necesitemos reescribir la pregunta en consecuencia, para poder responderla adecuadamente.

Chip Bennett Chip Bennett
6 jun 2012 20:18:16

como dije, quiero hacer una lista alfabética de todas las publicaciones (mi tipo de publicación seleccionado, en este caso page es solo un ejemplo). Así los visitantes pueden ver todas las entradas en una sola página como un índice de libro. Pero entendí que tendré que usar SQL entonces, en lugar de una consulta de publicaciones, gracias por la ayuda, intentaré un nuevo enfoque.

Tommixoft Tommixoft
6 jun 2012 20:20:59
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 2
1
10

Gracias a Chip Bennett quien me hizo ver que estaba equivocado al usar query_posts dentro del contenido. Así que usé get_posts y obtuve lo que quería, ¡gracias!

Aquí hay un ejemplo de cómo puedes hacerlo, si tienes el mismo problema que yo:

function algun_nombre(){

global $post;
$tmp_post = $post;
$args = array( 'post_type'=>'page', 'numberposts' => -1, 'orderby'=> 'title', 'order' => 'ASC' );
$myposts = get_posts( $args );

         if ( !empty($myposts) ) {
              foreach( $myposts as $post ) : setup_postdata($post);
              the_title();
              echo '<br>';             

              endforeach;

         } 

          $post = $tmp_post;

 }
6 jun 2012 20:31:50
Comentarios

Si agregas el código real que usaste para resolver tu pregunta, con gusto lo votaré positivamente.

Chip Bennett Chip Bennett
6 jun 2012 21:40:48
0
-1

Otra publicación tiene este código dentro de una función, pero para aquellos que buscan simplemente agregar publicaciones ordenadas alfabéticamente a un tema personalizado, por ejemplo, pueden usar lo siguiente...

<?php // Ordenar alfabéticamente las publicaciones de la categoría ***
global $post;
$temp_post = $post;
$args = array( 'category' => *categoryID*, 'numberposts' => -1, 'orderby' => 'title', 'order' => 'ASC' );
$these_posts = get_posts( $args );

if( !empty($these_posts) ) {
    foreach( $these_posts as $post ) : setup_postdata($post);
?>

<?php 

/* Aquí va el código HTML/PHP para mostrar cada publicación */

the_title("<h2>", "</h2>");
the_content("<div class='content'>", "</div>"); 

?>

<?php 
    endforeach; // Fin del Loop.
}
$post = $temp_post;
?>
19 mar 2018 21:37:44