記事の表示順
-
WP4.0以降だとorderbyにarrayで下記のように指定できるようです。
'orderby' => array( 'date' => 'DESC', 'title' => 'ASC' )
http://codex.wordpress.org/Function_Reference/WP_Query#Order_.26_Orderby_Parameters
ikaringさん
下記のように記述したのですが、うまくできませんでした。
$args = array( 'orderby' => array( 'date' => 'DESC', 'title' => 'ASC' ), 'posts_per_page' => '-1', 'cat' => '5', ); $query = new WP_Query( $args );
posts_per_pageとcatの数字は囲わなくていいんじゃないですかね。
$args = array( 'orderby' => array( 'date' => 'DESC', 'title' => 'ASC' ), 'posts_per_page' => -1, 'cat' => 5, ); $query = new WP_Query( $args );
すいませんが、状況がわかりませんので、どうダメなのかというのをご説明いただけると解決につながるかもしれません。
また、ループ部分の記述はどうなっていますでしょうか。ikaringさん
言葉足らずで申し訳ありません。
投稿日の年が同じものの中で、タイトルに順に表示したいと思っています。
<2015年>
タイトル1(投稿日は2015/03/31)
タイトル2(投稿日は2015/06/30)
タイトル3(投稿日は2015/09/30)
タイトル4(投稿日は2015/12/31)<2014年>
タイトル1(投稿日は2014/03/31)
タイトル2(投稿日は2014/06/30)
タイトル3(投稿日は2014/09/30)
タイトル4(投稿日は2014/12/31)しかし、現行では
<2015年>
タイトル4(投稿日は2015/12/31)
タイトル3(投稿日は2015/09/30)
タイトル2(投稿日は2015/06/30)
タイトル1(投稿日は2015/03/31)<2014年>
タイトル4(投稿日は2014/12/31)
タイトル3(投稿日は2014/09/30)
タイトル2(投稿日は2014/06/30)
タイトル1(投稿日は2014/03/31)と、あくまでも投稿日順で表示されてしまいます。
$args = array( 'orderby' => array( 'date' => 'DESC', 'title' => 'ASC' ), 'posts_per_page' => -1, 'cat' => 5, ); $query = new WP_Query( $args ); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ・ ・ endwhile; wp_reset_postdata(); endif;
先のorderbyの意味はまず投稿日で降順に並べる、同じ投稿日(時間も同じのはまずないとおもいますが)のものがあったらタイトルで昇順に並べるという意味ですので、現行の表示になってしまいますね。
カスタムフィールドに年を設定して、次のような感じでどうでしょうね。
$args = array( 'meta_key' => 'post_year',//設定したカスタムフィールドキー 'orderby' => array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ), 'posts_per_page' => -1, 'cat' => 5, );
あるいは、このような記事がありましたので、参考になるかもしれません。
http://wpxtreme.jp/yearly-archive-using-custom-field-in-wordpress
- トピック「記事の表示順」には新たに返信することはできません。