Quantcast
Channel: WordPress Note
Viewing all articles
Browse latest Browse all 87

カスタム投稿タイプを表示する(トップページ・サイドバー編)

$
0
0

カスタム投稿タイプを作成し、投稿できるようになっても、いざ表示させようと思ったら、いろんな方法があって、戸惑ってしまいます。

今日は、トップページやサイドバーなどのウィジェットで、特定のカスタム投稿タイプを表示したいときの、ループの書き方を紹介したいと思います。

※固定ページでも使用できます。

サブループ(カスタムループ)で、特定のカスタム投稿タイプを表示する

「gourmet」というカスタム投稿タイプを、トップページやウィジェットなどで表示するという例です。

経験上、メインループに影響を与えないサブループ(カスタムループ)で記述しておくほうが安全ですね。

※以前、メインループの記述方法で書いて、ページネーションでおかしなことになってしまいました…。

また、サブループの記述方法には、「WP_Query()」「get_posts()」がありますが、「WP_Query()」の方がより複雑な処理を行うことができます。

※メインループは、アーカイブページなどでページ送りが必要な時に使います。

1-1. WP_Query()

もっぱら、こちらばかり使用しています。

<?php
$args = array(
  'post_type' => 'gourmet', /* カスタム投稿名が「gourmet」の場合 */
  'posts_per_page' => 5, /* 表示する数 */
); ?>

<?php $my_query = new WP_Query( $args ); ?>

<ul>

<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>

<!-- ▽ ループ開始 ▽ -->

  <li>
    <h3><?php the_title(); ?></h3>
    <p class="published"><?php the_time( get_option( 'date_format' ) ); ?></p>
  </li>

<!-- △ ループ終了 △ -->

<?php endwhile; ?>

</ul>

<?php wp_reset_postdata(); ?>

※「wp_reset_postdata();」でリセットは必須。

参考サイト

関数リファレンス/WP Query

1-2. get_posts()

私はめったに使わないのですが…。(覚えにくくて苦手なだけです)

<?php
$args = array(
  'post_type' => 'gourmet', /* カスタム投稿名が「gourmet」の場合 */
  'posts_per_page' => 5, /* 表示する数 */
); ?>

  
<?php $my_posts = get_posts( $args ); ?>

<ul>

<?php global $post;
  foreach ( $my_posts as $post ) :
  setup_postdata( $post ); ?>

<!-- ▽ ループ開始 ▽ -->

  <li>
    <h3 class="title"><?php the_title(); ?></h3>
    <p class="published"><?php the_time( get_option( 'date_format' ) ); ?></p>
  </li>

<!-- △ ループ終了 △ -->

<?php endforeach; ?>

</ul>

<?php wp_reset_postdata(); ?>

※「wp_reset_postdata();」でリセットは必須。

参考サイト

テンプレートタグ/get posts

▼ 出力結果

出力結果は、「WP_Query()」も「get_posts()」も同じです。
<ul>
  <li>
    <h3 class="title">記事5</h3>
    <p class="published">2017年2月20日</p>
  </li>

  <!-- 新着5件分をループで表示 -->

  <li>
    <h3 class="title">記事1</h3>
    <p class="published">2017年2月18日</p>
  </li>
</ul>

Viewing all articles
Browse latest Browse all 87

Trending Articles