※アクセスログの検索キーワードを参考に記事
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が読込まれます
}
?>
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 }
?>
if($post->ID == ‘1′) {?>
---HTMLやPHP---
<?php } elseif($post->ID == ‘2′) {?>
---HTMLやPHP---
<?php } else {?>
---空欄など---
<?php }
?>
また記事IDの代わりに記事スラッグを使って判断させても良いと思います。
<?php
if($post->post_name == ‘profile’) {?>
(以下同様)
if($post->post_name == ‘profile’) {?>
(以下同様)
以上
2008年11月27日 at 12:59 PM
はじめまして。 初心者です。。
記事内容とはちょっとずれますが質問させていただいてもよろしいでしょうか・・?
dateページのサイドに、それで表示される月別記事リストをあるカテゴリに絞りたいのですが、ループの前にを入れたらカテゴリを絞ってくれた代わりに月分けをしなくなってしまいました。。
どのようにしたらよいのでしょうか?
お手間を取らせないようでしたら教えてください。よろしくお願いします。
2008年11月27日 at 1:25 PM
浜野さんコメントありがとうございます。
(一部コメントの文字が欠けてしまったようですが)
プラグインを使わず、もしquery_postsというテンプレートタグを使って呼び出すのでしたら、
<?php query_posts($query_string.”&cat=3″); ?>
で絞り込めないですかね?「3」というのはカテゴリのIDです。
下記の記事のExample 2〜4 が参考になると思います(英語ですが)。
Template Tags/query posts
またはこちらで紹介されているプラグインで解決するのではないでしょうか↓
WordPress 月別アーカイブをカテゴリ毎に表示させるモモンガの森(2008/9/28)
2008年11月27日 at 2:31 PM
早速のコメントありがとうございます!
タグをそのまま入れてしまったので抜けてしまったようです。。失礼しました。
すごいですっ!教えていただいたquery_stringでできました!英語一生懸命読みました。
query_postsはURLを経て受け取ったパラメータをすべて無視するんですね?
これは私の場合月間アーカイブからのパラメータのことですね?無視せず活かしたいときはquery_stringを使えばいいということですね! ですよね??
query_postsでカテゴリIDの指定だけしていたのでだめだったようです。
すごいですっ!ありがとうございます!
読者になりますっ! これからもよろしくお願いします!
2008年11月28日 at 1:06 PM
お役に立てたようでうれしいです(^^)
>query_postsはURLを経て受け取ったパラメータをすべて無視するんですね?
そうです。
>これは私の場合月間アーカイブからのパラメータのことですね?無視せず活かしたいときはquery_stringを使えばいいということですね! ですよね??
そうです。そのとおりです。そう理解しています。
いや〜、なんの補足もいらないじゃないですか、浜野さんの理解力は素晴らしいです☆
更新は結構バラつくんですが、良かったらまた見に来てくださいませm(__)m