¿Cómo consultar los últimos 5 posts y ordenarlos por título?
Estoy intentando crear un menú que liste los últimos "n" posts, donde el número "n" será una configuración definida por el usuario almacenada como una opción.
n = 5; //Obtener los últimos 5 posts de la base de datos.
El script que estoy usando actualmente (abajo) obtiene todos los posts de la base de datos y luego solo muestra los últimos 5 de esa colección.
Esto funciona bien hasta que decidí ordenar la lista por título. Cuando lo hago, en lugar de ordenar solo los últimos 5 posts por título, está ordenando toda la colección de posts, sin importar cuándo fueron publicados.
¿Algún consejo sobre cómo puedo cambiar esta consulta para obtener solo los últimos "n" posts y luego ordenarlos por título entre esos 5?
(Nota: Estoy realmente interesado en la consulta get_posts() dentro del elemento UL. La primera consulta ($myquery) está solo para asegurarnos de que tenemos posts para mostrar antes de continuar.)
function recent_posts(){
$catHidden=get_cat_ID('hidden');
$myquery = new WP_Query();
$myquery->query(array('cat' => "-$catHidden",'post__not_in' => get_option('sticky_posts')));
$myrecentpostscount = $myquery->found_posts;
if ($myrecentpostscount > 0){ ?>
<ul>
<?php
global $post;
if(get_option('mySort') == 'asc'){
$sortOrder='title';$sortDirection='asc';
}
$myrecentposts = get_posts
(
array
(
'post__not_in' => get_option('sticky_posts'),
'cat' => "-$catHidden",
'numberposts' => get_option('cb2_latest_count'),
'orderby' => $sortOrder,
'order' => $sortDirection
)
);
foreach($myrecentposts as $idxrecent=>$post) {
//DIBUJAR EL MENÚ DE POSTS
}
wp_reset_postdata();
}

$yourquery = new WP_Query('posts_per_page=5&orderby=title');
haría eso.
Editar Respuesta añadida
<?php
$posts = new WP_Query('posts_per_page=5');
foreach($posts->posts as $post){
$sorted[$post->ID] = $post->post_title;
}
asort($sorted, SORT_STRING);
foreach($sorted as $k=>$v){
//tu bucle -- usa los ID's para cada llamada de elemento
the_title($k);
the_content($k);
}
?>

Gracias por la respuesta MF, pero todavía no lo tengo claro. Creo que lo que puede estar confundiendo es que mi preocupación principal es la segunda consulta, get_posts(). Todavía está obteniendo datos de toda la colección de posts, no de los últimos 5

¿Por qué no los obtienes primero y luego los ordenas? Si tu problema es que obtienes los incorrectos, obtén primero los correctos y luego ordénalos.

Sí, eso es lo que me gustaría hacer. Sin embargo, una vez que tienes los últimos 5 posts, están en orden de publicación (los más recientes primero). Quiero tomar esos 5 posts y ordenarlos alfabéticamente antes de pasarlos al bucle for. ¿Cómo le indicas entonces al bucle for en qué orden debe mostrarlos?

utiliza el siguiente código y modifícalo a tu gusto:
// obtener los últimos cinco posts
$latestposts = get_posts(); // por defecto obtiene los últimos 5
// solo obtener los IDs de los posts
$keys = array_keys($latestposts);
// obtener esos 5 posts pero ordenados por título
$fivepostsorderedbytitle = get_posts(array('orderby' => 'post_title', 'post__in' => $keys));
