May
19
2005
WordPressは1.5になってからカテゴリ毎にテンプレートを設定できるようになったのはテンプレートをカテゴリ毎に変更するでも書きました。これとis_機能によって、カテゴリ、ページ、ポスト毎にテンプレートに変化を加えることができてとても便利だったのですが、例えば、「Test」というカテゴリだけに別のサイドバー(sidebar-2.php)を使いたい時、
<?php get_sidebar(); ?>
の部分を
<?php if(is_category('Test')){ ?>
<?php include (TEMPLATEPATH . ‘/sidebar-2.php’); ?>
<?php } else{ ?>
<?php get_sidebar (); ?>
<?php } ?>
とすればいいので簡単なのですが、このsidebar-2.phpを複数のカテゴリで使用したい時のやり方があればとずっと検索していました。
1つずつ指定するのはカテゴリ数が少ない時がいいのですが、例えばカテゴリIDが1・2・3はsidebar.php、4・5・6はsidebar-2.phpを、その他はsidebar-3.phpを使いたいなんて時には1つずつ指定するのは少し面倒。
CodexのThe_LoopページのExclude Posts From Some Categoryを参考にして複数カテゴリに適応できないかやってみました。
<?php if ( !(in_category('3') && is_home()) && in_category('1')) { ?>
<?php get_sidebar(); ?>
<?php } else{ ?>
<?php } ?>
何故かこれをcategory.phpに入れたら出来ましたがindex.phpでは効かず。is_homeを抜くとcategory.phpでも効かず。上のコード、homeの後の”)”が1つ多い様な気がするんですが、抜くとエラーでまた効かず。うまく行ったときも、該当するカテゴリに(この場合IDが1と3)投稿がないとサイドバーにエラーが出てくるし、複数にまたがるカテゴリの投稿は1と3を選ぶなら問題ないと思いますが、違うもの(例えば2など)を選ぶと正常に動きません。やっぱり無理なのかな ?:sad: PHPが解る人ならきっと簡単に出来てしまうんでしょうね
本当は、サブカテゴリがメインカテゴリのテンプレートを使う設定だったら良いのにと思いますが、ForumのCategory Template applied to Sub-categoriesによると、まだこれはできないみたいですね。
Trackback URI: http://www.hyperpup.com/main/archives/155/trackback/


うーん
「!」は否定の意味、&&やandは「両方」の意味なので、mayuさんのを無理矢理日本語に直すと・・・・
「category(3)とhome()に当てはまらなくて、なおかつcategory(1)の時 サイドバーを呼び出す」
・・・・という風になっていそう:???:
もしカテゴリーが1か3どちらかの時にだけ同じsidebarを使いたいのなら、「どちらか」という意味の「||」かorを使って・・・
if (in_category(3) || in_category(1)) {・・・という感じのIF文にすればOKな気がします。
ちょと寝ぼけてるのでハチャメチャなこと言ってるかもしれません
Kaira
Fri, May 20, 2005 @ 0:28
わぉ
私自信が呼んでも、なにやら意味不明な言葉のられつになってる
Kaira
Fri, May 20, 2005 @ 0:35
いえ、わかりますよ
Codexのサイトにはカテゴリ3以外って書いてるのにこのコードでは何でin_category(3)なんだ?って疑問に思ってたんです。1つ勉強になりました。否定の意味だったんですね!素人考えてこの否定を外して試してみましたが、やっぱり複数指定は無理のようです
b2の時はできたんですけど、WordPressの場合、他のカテゴリのリストタグとかでもexcludeはあってもincludeがないのでたまに不便な時があります。こういう設定も柔軟に出来たらさらに良いなって思います 
Mayu
Fri, May 20, 2005 @ 17:53
びっくりマーク
を外してしまうと、category(3) home() category(1)全てに当てはまらないとSidebarが表示されないんじゃないでしょうか。
ここは「&」か「||」を使えば解決しそうな気もします
Kaira
Sun, May 22, 2005 @ 21:38
「&」と「&&」でも又意味が違うんですか?「||」ってよく見かけるけど実はどれも意味を良くわかっていません
本家ではこの複数のカテゴリ指定の説明を目にしないんですけど(やりたいと言ってる人はたまに見かけますが)、Kairaさんから見てPHP的にはそんなに難しくないことなんですか?フォーラムでも答えが見つからないので結構いろんなところいじらないといけないのかな
って思ったりもしたのですが、テンプレートで指定するだけでもできそうですかね 
Mayu
Wed, May 25, 2005 @ 8:46
「or」か「||」を使えばの間違いです
それと&&とand、||とorは優先順位以外同じ意味だったと思います。
素人考えでは、
こんな感じにすれば、インデックスページ・カテゴリー1・カテゴリー5いずれかに当てはまればsidebar-2.phpを呼び出し、それ以外の場合は標準のsidebarを読み込むことが出来るんじゃないかなぁ・・・。(<?php ?>は半角にもどしてね)
間違ってる可能性大
Kaira
Wed, May 25, 2005 @ 10:00
おぉ

今テストでやってみたらエラーも出ず、出来ている感じですよ
もうちょっと色々やってから報告しますね。とりあえずは成功しているみたいです 
何かKairaさんのこれ、いけたみたいです
Mayu
Wed, May 25, 2005 @ 15:41
お、動きましたか

is機能を使えば簡単にいろいろと遊べそうですね
私は土曜日から2週間ほど出かけてしまうので、しばらくWPはさわれないのだけど、帰ってきて少し落ち着いたら自分のブログでも立ち上げようかなぁと思ってます。旅先でもデザインを少しは考えておかないとなぁ・・・。
Kaira
Wed, May 25, 2005 @ 23:59
旅行ですか?行ってらっしゃーい。Kairaさんのサイトも楽しみにしてますよ

is機能とTHEME機能でWPもかなり柔軟に色々できるようになりました。プラグインも色々出ているし。ただのブログソフトではなくなってきてますよね
Mayu
Fri, May 27, 2005 @ 14:36
>私は土曜日から2週間ほど出かけてしまうので
Kairaさん 二、二週間も旅行

いいなぁ~、優雅~~リッチ~~
yutaka
Fri, May 27, 2005 @ 17:39
旅行ともちょっと違うのだけど、まぁ似たようなもです
時は金なりが本当なら私はよっぽど大金持ちだわ
WP少しずつ良くなってきた感じがしますね。今年は日本でもWPの波が来るかも?
環境が良くなってユーザーが増えていくなら嬉しいことですよね~。
そのためにもお二人のプラグインの使い方など期待してますよん
Kaira
Fri, May 27, 2005 @ 22:01