WordPress のカスタム投稿の最新投稿一覧をサイドバーやトップページにのせる

普通の「最新投稿」と同じように自分のつくったカスタム投稿の「最新投稿」をサイドバーウィジェットなどに表示する方法。

  1. 下のコードを環境に合わせて書きかえる
  2. トップページであればコードを index.php に、サイドバーウィジェットであればコードを php のコード入力が可能になっているウィジェットに貼り付ける

結論

<ul>
<?php
    $posts = new WP_Query( array(
            'post_type' => 'animal',
            'posts_per_page' => 3
        )
    );
    if ( have_posts() ) : while ( $posts->have_posts() ) : $posts->the_post();
?>
    <li>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </li>
<?php endwhile; endif; wp_reset_query(); ?>
</ul>

ここではカスタム投稿タイプを animal とした。

注意

  • query_posts は非推奨なので使わない
  • have_posts を使うときは new WP_Query を使う
  • WP_Query を使うときは最後に wp_reset_query を入れる
  • WP_Query に入れる配列で、カスタム投稿タイプ、表示するリスト数、並べ方などを指定する
  • get_posts → have_posts では、カスタム投稿のリストを普通の投稿と同じようにのせることができない
query_posts( $args );
if( have_posts() ) :  while( have_posts() ) : the_post();

は推奨されない。

サイドバーウィジェットに貼り付けるときの注意

トップページであればコードを index.php にそのまま貼り付けるだけで表示されるが、サイドバーのウィジェットはデフォルトで php のコードを受けつけないようになっている。

実際、テキストウィジェットに上のコードを貼り付けても動作しない。

そこで「PHP Code Widget」というプラグインを使い、php 入力を受け付けるウィジェットをつくる。そのウィジェットに今回のコードを貼り付けると、そのウィジェットがカスタム投稿の一覧を表示してくれる。

広告