サポート » 使い方全般 » 記事の表示順

  • 解決済 yuru

    (@yuru)


    特定のカテゴリの記事の表示順を「日付の降順+タイトルの昇順」の複合にしたいのですが、プラグインを使わずにできるのでしょうか?

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • WP4.0以降だとorderbyにarrayで下記のように指定できるようです。

    'orderby' => array( 'date' => 'DESC', 'title' => 'ASC' )

    http://codex.wordpress.org/Function_Reference/WP_Query#Order_.26_Orderby_Parameters

    トピック投稿者 yuru

    (@yuru)

    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 );
    トピック投稿者 yuru

    (@yuru)

    ikaringさん

    posts_per_pageとcatの数字を囲わないようにしたのですが、やはりダメでした。

    すいませんが、状況がわかりませんので、どうダメなのかというのをご説明いただけると解決につながるかもしれません。
    また、ループ部分の記述はどうなっていますでしょうか。

    トピック投稿者 yuru

    (@yuru)

    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

    トピック投稿者 yuru

    (@yuru)

    ikaringさん

    教えていただいたように、カスタムフィールドを設定して、表示できるようになりました。
    使い方を理解していなくて、お手数をお掛けしました。
    本当に、ありがとうございました!!

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「記事の表示順」には新たに返信することはできません。