[WordPress] Wp_query の結果を並べ替える方法

wp_query の結果を並べ替えるしようとしている、私はそれを並べ替えたくさせることがなく異なるパラメーターで、クエリもう一度。そのようなある:

$the_query = new WP_Query( $args );

と $the_query をソートしたい, WP_Query はそのような構造を返します:

$the_query->posts[0]->title; 

だから、たとえば ‘title’ ですべての要素をソートしたいです。これを試みた:

usort($the_query->posts, function($a, $b) {
   return $a['title'] - $b['title'];
});

を並べ替えるクエリを実行した後にします。ですので分類何回も、ソートしたいたびに、クエリを実行したくない

ソリューション

この致命的なエラーが返されます: WP_Post 型のオブジェクト配列として使用できません

usort($the_query->posts, function($a, $b) {
   return $a['title'] - $b['title'];
});

これは、配列の構造はそのような:

$the_query->posts[0]->title; 

$a->title - $b->title$a['title'] - $b['title'] を変更する必要があり、ピーテル ・ グーセン、最終的な結果の応答を使用するように:

usort($the_query->posts, function($a, $b) {
    return strcasecmp( 
            $a->title, 
            $b->title
        );
});

すべての感謝

見てください、orderby WP_Queryorder パラメーター。記事のタイトルでソートする必要がある場合は、クエリ パラメーターに次を追加できます

'orderby' => 'title'
'order' => 'ASC'

編集

usort として並べ替える必要がある場合は、次を行うことができます

usort($the_query->posts, function($a, $b) {
   return strcasecmp( 
                $a->post_title, 
                $b->post_title 
            );
});

WP_Query (‘orderby = 日付 & オーダー DESC =’)

またはこれを試して、カスタム メタデータ値に基づいてを並べ替えたい場合

$args = array(
        'post_type' => 'post',
        'meta_key' => 'pb_issue_featured',
        'orderby'   => 'meta_value',
        'order' => 'DESC',
        'posts_per_page' => $posts,
        'paged' => $paged,
        'paged' => 1,
        'meta_query' => array(
            array(
                'key' => 'headline',
                'value' => 1,
                'compare' => '!=' 
                )
            )
        );

add_filter( 'posts_orderby', 'filter_query' );
$q = new WP_Query($args);
remove_filter( 'posts_orderby', 'filter_query' );

function filter_query( $query ) {
    $query .= ', wp_posts.menu_order ASC';
    return $query;
}

http://stackoverflow.com/questions/26943392/how-to-sort-the-result-of-wp-query

スポンサーリンク

Leave a Reply