記事ごとに違うサイドバーを読込む。

※アクセスログの検索キーワードを参考に記事

WordPressサイトで、特定の記事ごとorカテゴリごとに違うサイドバーを読込む。

例)
会社概要のページ…記事IDが「1」とする
製品案内のページ…記事IDが「2」とする
 → sidebar-page.php
スタッフブログ(カテゴリ)…カテゴリIDが「3」とする
 → sidebar-blog.php
その他
 → sidebar.php

以上のように記事やカテゴリ毎に別のサイドバーを表示させるには?


 
※あらかじめ上記ファイル名でそれぞれのサイドバーを作っておく。

■対象テンプレート:
index.php
single.php
page.php

■方法:
デフォルトテーマのテンプレートの場合、最後のほうにある

<?php get_sidebar(); ?>

を下記のように修正

<?php
if($post->ID == ‘1′ || $post->ID == ‘2′) {
 include(’sidebar-page.php’);
} elseif($cat == ‘3′) {
 include(’sidebar-blog.php’);
} else {
 get_sidebar(); ※sidebar.phpが読込まれます
}
?>

わかりやすくするために単純に書きましたが、is_single()やis_page()などコンディショナルタグも併用しないと思わぬ結果になることがあると思います。工夫してみてください。

■補足:
sidebar-page.phpの中でさらに「会社概要」と「製品案内」でサイドバーの内容を変えるには、コンディショナルを使って同様に分岐処理。

<?php
if($post->ID == ‘1′) {?>
---HTMLやPHP---
<?php } elseif($post->ID == ‘2′) {?>
---HTMLやPHP---
<?php } else {?>
---空欄など---
<?php }
?>

また記事IDの代わりに記事スラッグを使って判断させても良いと思います。

<?php
if($post->post_name == ‘profile’) {?>
(以下同様)

以上

4件のコメントがありますコメントのRSSフィード

  1. 浜野 さんのコメント:

    はじめまして。 初心者です。。 
    記事内容とはちょっとずれますが質問させていただいてもよろしいでしょうか・・?

    dateページのサイドに、それで表示される月別記事リストをあるカテゴリに絞りたいのですが、ループの前にを入れたらカテゴリを絞ってくれた代わりに月分けをしなくなってしまいました。。
    どのようにしたらよいのでしょうか?

    お手間を取らせないようでしたら教えてください。よろしくお願いします。

  2. みやざわ さんのコメント:

    浜野さんコメントありがとうございます。
    (一部コメントの文字が欠けてしまったようですが)

    プラグインを使わず、もしquery_postsというテンプレートタグを使って呼び出すのでしたら、

    <?php query_posts($query_string.”&cat=3″); ?>

    で絞り込めないですかね?「3」というのはカテゴリのIDです。

    下記の記事のExample 2〜4 が参考になると思います(英語ですが)。
    Template Tags/query posts

    またはこちらで紹介されているプラグインで解決するのではないでしょうか↓

    WordPress 月別アーカイブをカテゴリ毎に表示させるモモンガの森(2008/9/28)

  3. 浜野 さんのコメント:

    早速のコメントありがとうございます!
    タグをそのまま入れてしまったので抜けてしまったようです。。失礼しました。

    すごいですっ!教えていただいたquery_stringでできました!英語一生懸命読みました。
    query_postsはURLを経て受け取ったパラメータをすべて無視するんですね?
    これは私の場合月間アーカイブからのパラメータのことですね?無視せず活かしたいときはquery_stringを使えばいいということですね! ですよね??

    query_postsでカテゴリIDの指定だけしていたのでだめだったようです。
    すごいですっ!ありがとうございます!
    読者になりますっ! これからもよろしくお願いします!

  4. みやざわ さんのコメント:

    お役に立てたようでうれしいです(^^)

    >query_postsはURLを経て受け取ったパラメータをすべて無視するんですね?
    そうです。

    >これは私の場合月間アーカイブからのパラメータのことですね?無視せず活かしたいときはquery_stringを使えばいいということですね! ですよね??
    そうです。そのとおりです。そう理解しています。

    いや〜、なんの補足もいらないじゃないですか、浜野さんの理解力は素晴らしいです☆

    更新は結構バラつくんですが、良かったらまた見に来てくださいませm(__)m

コメント/質問お待ちしています

トラックバックURL:
http://wordpress4cms.net/191/trackback/

CATEGORY

ARCHIVE

2009 年 1 月
« 12 月    
 123
45678910
11121314151617
18192021222324
25262728293031