Advanced Custom Fieldsは、投稿やページにオリジナルな入力欄をつけることができる便利なプラグインです。このプラグインを使用して、カスタムフィールド値の順番でリストを出力する方法をご紹介します。


acf

カスタムフィールド順でリストを出力

サンプルコードは下記です。

  query_posts(array( 
        'post_type' => 'post',
        'showposts' => -1,
        'meta_key' => 'startday',
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    ) ); 
   if (have_posts()) :    
      while (have_posts()) : the_post();
           //loopコード
      endwhile;

post_typeには、投稿タイプが入ります。カスタム投稿タイプでも構いません
meta_keyはソートしたいカスタムフィールドの順です。日付が入ることを想定しています(別の何らかの数値でも問題ないです)。
order DESCは降順、ASCと入れると昇順になります。

特定の値以上のカスタムフィード値を持つ場合にだけ出力

さらに上記のクエリを改造し、特定の値以上を持つ場合にのみリストを出力してみましょう。イベント情報ページなどで、特定日付を過ぎてしまったイベントを出力させない場合などに利用できます。

  query_posts(array( 
        'post_type' => 'post',
        'showposts' => -1,
        'meta_key' => 'startday',
        'meta_query' => array(
        array(
            'key' => 'startday',
            'value' => '20170809',
            'compare' => '>'
        )
        ),
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    ) ); 
   if (have_posts()) :    
      while (have_posts()) : the_post();
           //loopコード
      endwhile;

カスタムフィードstartdayには、20170827などのフォーマットで日付が入っているとします。meta_queryの項目valueに20170809と入っているこの数より大きなものだけがリスト出力されます。
この値に今日の日付をプログラムで入れると、未来の日付がstartdayというカスタムフィールドに入っている場合のみリストが出力されるようになります。

WordPressでのどのようなカスタマイズも私たちがお手伝いいたします。こちらからご依頼ください