2011-06-23 10 views
1

以下の関数では、$ myrecentposts変数に5つの最新の投稿の集合が保持されます。これらの5つの投稿をどのようにしてforループに書き込む前に並べ替えることができるので、配列のポスト・タイトル・インデックスによって注文されますか?名前付きインデックスによる配列の並べ替え方

function getLatestPostsAndSort($post) 
{ 
    $myrecentposts = get_posts(
     array('post__not_in' => get_option('sticky_posts'), 
     'numberposts' => 5 
    ) 
//NEED TO RESORT THE ARRAY HERE BY [POST-TITLE] 
    foreach($myrecentposts as $idxrecent=>$post) 
    { 
    ?><li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li><?php 
    } 
} 

PS:データベースから希望の順序で取得することをおすすめします。しかし、get_posts()メソッドはそのようなオプションを提供しません。デフォルトの注文は、ポスト日付(最新のもの)です。注文を「タイトル」に変更すると、投稿日が考慮されず、ポストコレクション全体がプルされ、タイトルで注文されます。

+0

可能重複(http://stackoverflow.com/questions/2699086/php-sort-multidimensional-array-by-value) – thetaiko

+0

なぜ'the_title()'はパラメータを取らない関数ですか? – Matthew

+0

@konforce - the_title()は$ postオブジェクトの組み込みメソッドです –

答えて

2

は一般的に、次のような配列をソートすることができます。

これはWordPressであれば、それはあるかもしれないように、そして迅速なGoogle検索に基づいて、それが見えます:あなたはPHP 5.3をお持ちでない場合は

usort($myrecentposts, function($a, $b) { 
    return strcmp($a->post_title, $b->post_title); 
}); 

、あなたはその匿名関数を移動する必要があります本物のように:[値によってPHPソート多次元配列]の

function sort_post_by_title($a, $b) { 
    return strcmp($a->post_title, $b->post_title); 
} 
usort($myrecentposts, 'sort_post_by_title'); 
+0

+1です。意味をなさない今すぐテストしてください。 –

+0

素晴らしいKonforceを動作させます。感謝万円! –

0

あなたは、PHPのusort関数を使用することができます:あなたは、キーの実際の名前が何であれであることをtitleを調整する必要が

usort($myrecentposts, function($a, $b) { 
    return strcmp($a['title'], $b['title']); 
}); 

http://php.net/manual/en/function.usort.php