Come interrogare gli ultimi 5 post e ordinarli per titolo?
Sto cercando di creare un menu che elenchi gli ultimi "n" post, dove "n" sarà un'impostazione definita dall'utente memorizzata come opzione.
n = 5; //Recupera gli ultimi 5 post dal database.
Lo script che sto attualmente usando (qui sotto) recupera tutti i post dal database e poi mostra solo gli ultimi 5 di quella collezione.
Questo funziona bene finché non decido di ordinare la lista per titolo. Quando lo faccio, invece di ordinare solo gli ultimi 5 post per titolo, ordina l'intera collezione di post, senza considerare quando sono stati pubblicati.
Qualche suggerimento su come posso modificare questa query per recuperare solo gli ultimi "n" post, poi ordinarli per titolo tra questi 5 soltanto.
(Nota: Sono particolarmente interessato alla query get_posts() dentro l'elemento UL. La prima query ($myquery) è qui solo per assicurarci che ci siano post da visualizzare prima di procedere.)
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) {
//DISEgna IL MENU DEI POST
}
wp_reset_postdata();
}

$yourquery = new WP_Query('posts_per_page=5&orderby=title');
farebbe questo.
Modifica Risposta Aggiunta
<?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){
//il tuo ciclo -- usa gli ID per ogni chiamata
the_title($k);
the_content($k);
}
?>

Grazie per la risposta MF, ma non ci sono ancora del tutto. Penso che ciò che potrebbe confondere sia che mi preoccupa soprattutto la seconda query, get_posts(). Sta ancora estraendo dall'intera collezione di articoli, non dagli ultimi 5

perché non li ottieni prima e poi li ordini? Se il tuo problema è ottenere quelli sbagliati, prendi prima quelli giusti, poi mettili in ordine.

Sì, è quello che vorrei fare. Tuttavia, una volta che hai gli ultimi 5 articoli, sono in ordine di pubblicazione (i più recenti per primi). Voglio poi prendere quei 5 articoli e ordinarli alfabeticamente prima di passarli al ciclo for. Come fai poi a dire al ciclo for in che ordine disporli?

utilizza il seguente codice e modificarlo a tuo piacimento:
// recupera gli ultimi cinque articoli
$latestposts = get_posts(); // di default vengono presi gli ultimi 5
// recupera solo gli ID degli articoli
$keys = array_keys($latestposts);
// recupera quei 5 articoli ma ordinati per titolo
$fivepostsorderedbytitle = get_posts(array('orderby' => 'post_title', 'post__in' => $keys));
