WordPress

シングルページに同一カテゴリーの記事一覧を表示するカスタマイズ

WordPressのシングルページの記事の下に現在表示されている記事と同じカテゴリーの一覧を表示させるやり方です。いくつかやり方があるのですがトラックバックURLがおかしくなったりわけわからなくなって色々試した結果これに落ち着きました。

[ads_center]

query_postsを使ってみる

まずは現在のカテゴリーIDを取得します。カテゴリーが複数ある場合がありますが最初のカテゴリーだけを取得するようにしてみます。

foreach((get_the_category()) as $cat) {
     $cat_id = $cat->cat_ID;
     break;
}

次にquery_postsに引き出す情報をパラメータで指定していきます。

query_posts(
     array(
          'cat' => $cat_id, 
          'showposts' => 10, 
     );

showpostsは表示させる件数です。ここでは10件にしています。あとはループで取得した情報を表示させていきます。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
<?php endif; ?>

最後にループをリセットしておきます。これをつけないとコメントなど色々とおかしくなっちゃいます・・・

<?php wp_reset_query() ?>

これで現在と同じカテゴリーの記事が10件表示されるようになります。WordPressのフォーラムを参考にしてみました。

現在表示されている記事をリストから除外したい場合

もう少しカスタマイズしてみました。同一カテゴリーリストは表示されたのですが、現在表示されている記事もリストに入っているのでこれを表示しないようにしてみます。やり方は現在表示されている投稿IDを取得してそれをquery_postsの引数であるpost__not_inに配列で渡してあげます。
現在の投稿IDを変数に代入したい場合にはget_the_ID()を使用します。the_ID()では変数に代入できないみたいですね。

$post_id = get_the_ID();
foreach((get_the_category()) as $cat) {
     $cat_id = $cat->cat_ID ;
     break ;
}
query_posts(
     array(
          'cat' => $cat_id, 
          'showposts' => 10, 
          'post__not_in' => array($post_id)
     )
);

最終的にやりたかったこと

なんかあとでまた忘れそうなので最終的に自分がやりたかったことは以下のとおりです。

  • シングルページで現在と同じカテゴリーの一覧を表示させる
  • 現在表示されている投稿は除外する
  • 一覧に一つも記事がない場合は何も表示させない(リストを括っているdivなど)

ということで最終的にできたコードはこんな感じです。

<?php
     $post_id = get_the_ID();
     foreach((get_the_category()) as $cat) {
          $cat_id = $cat->cat_ID ;
          break ;
     }
     query_posts(
          array(
               'cat' => $cat_id, 
               'showposts' => 10, 
               'post__not_in' => array($post_id)
          )
     );
?>
<?php if(have_posts()) : ?>
<div>
     <ul>
<?php while (have_posts()) : the_post(); ?>
     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
     </ul>
</div>
<?php endif; ?>
<?php wp_reset_query() ?> 

これが正しいコードなのかはあまり自信がないのですがとりあえず今のところ問題なく表示されいるので大丈夫かと思います。query_postsは他にも色んな引数などがあるのでもっと知りたい人はCodexがとても参考になります。

以上、シングルページに同一カテゴリーの一覧を表示するやり方でした。

関連記事

  1. WordPressのログイン時のツールバー

    WordPress

    WordPressの投稿画面タイトル欄に文字をペーストすると下にズレるのを直すやり方

    かなりどうでもいい内容なんですが、ちょっと個人的に気になってたので備忘…

  2. Hemingway

    WordPress

    レスポンシブ対応の2カラムWordPressテーマ「Hemingway」

    レスポンシブに対応した2カラムのお洒落なWordPressテーマを発見…

  3. WordPressのログイン時のツールバー

    WordPress

    WordPressでログイン中に上部ツールバーを表示・非表示にする設定方法

    WordPressでログイン中に上部ツールバーを表示または非表示にする…

  4. WordPressのログイン時のツールバー

    WordPress

    WordPressでキーワードを登録しておくと自動でリンクをつけてくれるプラグイン「WP Keywo…

    なかなか便利だったのでご紹介します。WordPressで自分が登録した…

  5. WordPressのログイン時のツールバー

    WordPress

    WordPressをサーバーにインストールした後にやっておきたい手順リスト

    WordPressをサーバーにインストールした後にやっておきたい手順リ…

  6. WordPress

    WordPressで特定の記事やページにカスタムフィールドで指定したCSS・JSファイルを読み込む

    個人的に今後ちょっと使いそうな機能だったのでメモがてらエントリー。Wo…

コメント

  1. この記事へのコメントはありません。

  1. 2012年 11月 10日
    トラックバック:電ビWeb担Blog

最近の記事

  1. Anker PowerHouse 200

アーカイブ

PAGE TOP