Cum să interoghezi ultimele 5 articole și să le sortezi după titlu?
Încerc să creez un meniu care afișează ultimele "n" articole, unde numărul "n" va fi o setare definită de utilizator stocată ca opțiune.
n = 5; //Extrage ultimele 5 articole din baza de date.
Scriptul pe care îl folosesc în prezent (mai jos) extrage toate articolele din baza de date și apoi afișează doar ultimele 5 din acea colecție.
Acest lucru funcționează bine până când am decis să sortez lista după titlu. Când fac asta, în loc să sorteze ultimele 5 articole după titlu, sortează întreaga colecție de articole, fără a ține cont de data publicării.
Ce sugestii aveți pentru a modifica această interogare pentru a extrage doar ultimele "n" articole, apoi să le sortez doar pe acestea după titlu?
(Notă: Sunt interesat în special de interogarea get_posts() din interiorul elementului UL. Prima interogare ($myquery) este aici doar pentru a ne asigura că avem articole de afișat înainte de a continua.)
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) {
//DESENEAZĂ MENIUL CU ARTICOLE
}
wp_reset_postdata();
}

$yourquery = new WP_Query('posts_per_page=5&orderby=title');
ar face asta.
Editat Răspuns adăugat
<?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){
//bucla ta -- folosește ID-uri pentru fiecare apel
the_title($k);
the_content($k);
}
?>

Mulțumesc pentru răspuns, MF, dar nu sunt încă pe deplin mulțumit. Cred că ceea ce poate fi confuz este faptul că sunt foarte preocupat de a doua interogare, get_posts(). Încă preia din întreaga colecție de articole, nu din ultimele 5

de ce nu le obții mai întâi, apoi le ordonezi? Dacă problema ta este că obții cele greșite, obține mai întâi cele corecte, apoi pune-le în ordine.

Da, asta aș dori să fac. Totuși, odată ce ai cele mai recente 5 articole, ele sunt în ordinea postării (cele mai recente primele). Apoi vreau să iau acele 5 articole și să le ordonez alfabetic înainte de a le scrie în bucla for. Cum poți specifica buclai for în ce ordine să le aranjeze?

folosește următorul cod și modifică-l după preferințe:
// preia ultimele cinci articole
$latestposts = get_posts(); // implicit se preiau ultimele 5
// preia doar ID-urile articolelor
$keys = array_keys($latestposts);
// preia aceleași 5 articole, dar ordonate după titlu
$fivepostsorderedbytitle = get_posts(array('orderby' => 'post_title', 'post__in' => $keys));
