カスタムフィールドにチェックを入れた記事だけ表示、別のフィールドに入力した数字の順に並べる

目次

準備するもの

  • カスタム投稿タイプを使用
  • Advanced Custom Field

記事の順番を指定できるプラグインで、不具合なく安心して使用できるものがないため、カスタムフィールドを使用して記事の順番を指定しています。
いろいろ試したのですが、条件や他のプラグインとの競合で、正しく動作したりしなかったりするので。
ちょっと面倒ですが、今のところこの方法が一番安全かと思っています。

手順1.カスタムフィールドで表示させたい記事のチェック欄を作る

フィールドタイプ 真偽、今回はフィールド名は ‘pickup’ とします。

手順2.カスタムフィールドで表示させたい記事の順番を入力する欄を作る

フィールドタイプ テキスト、フィールド名は ‘number’ とします。

記事投稿画面にカスタムフィールドが追加されますので、入力します。

手順3.出力する

記事を表示させたい箇所に、以下を記述します。

<ul>
  <?php
    $paged = (int) get_query_var('paged');
    $args = array(
      'posts_per_page' => 3,
      'paged' => $paged,
      'post_type' => 'custom_post_type', // ポストタイプ名
      'meta_key' => 'number',
      'orderby' => 'meta_value_num', // _numを忘れると数字として認識されないようです
      'order' => 'ASC',
      'meta_query' => array(
        'key' => 'pickup',
        'value' => true,
      )
    );
    $the_query = new WP_Query($args);
  ?>
  <?php if ( $the_query->have_posts() ): ?>
    <?php while ( $the_query->have_posts() ): $the_query->the_post(); ?>
      <li>
        <a href="<?php the_permalink() ?>">
          <?php the_title(); ?>
        </a>
      </li>
    <?php endwhile; ?>
  <?php else : ?>
  <p>記事はありません</p>
  <?php endif; ?>
</ul>
<?php wp_reset_postdata(); ?>
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次