• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

「関数リファレンス/in category」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(en:Template Tags/in_category 07:55, 16 Apr 2007 Dspt 版)
 
(和訳+編集/未訳あり:プラグインオプション)
1行目: 1行目:
 
原文・最新版: [[:en:Template Tags/in_category|WordPress Codex » in_category]]
 
原文・最新版: [[:en:Template Tags/in_category|WordPress Codex » in_category]]
  
= Description =
+
== 説明 ==
 +
(Description)
  
Returns true if the current post is in the specified [[Glossary#Category|Category]].  Normally this tag is used within [[The Loop]], but the $post variable must be set when [[#Use OUTSIDE The Loop|using this tag outside of the loop]].
+
指定した[[用語集#Category|カテゴリ]]に現在の投稿が属するとき、true を返します。通常、このタグは[[:ja:The Loop|ループ]]の中で使いますが、[[#ループ外で使う|ループ外で使いたい場合]]は、事前に変数 <code>$post</code> の値をセットしておく必要があります。
  
= Usage =
+
== 使い方 ==
Suppose you want to execute some specific [[Glossary#PHP|PHP]] or [[Glossary#HTML|HTML]] only if the current post being processed is in a category with a category ID number we'll represent here as 'category_id'.
+
(Usage)
 +
 
 +
例えば、現在処理中(ページを生成中)の投稿が、あるカテゴリID に属するときにのみ、特定の [[用語集#PHP|PHP]] [[用語集#HTML|HTML]] を動作させたい場合には、これで 'category_id' を指定します。
 
   
 
   
 
<pre><?php if ( in_category('category_id') ): ?>
 
<pre><?php if ( in_category('category_id') ): ?>
   // Some category specific PHP/HTML here
+
   // ここにカテゴリ特有の PHP/HTML を書く
 
<?php endif; ?></pre>
 
<?php endif; ?></pre>
  
= Examples =
+
== 用例 ==
 +
(Examples)
  
== Display Some Category Specific Text ==
+
=== カテゴリ特有のテキストを表示 ===
Display <tt><nowiki>&lt;span class="good-cat-5"&gt;This is a nice category&lt;/span></nowiki></tt> in each post which is a member of category '''5''', otherwise display <tt><nowiki>&lt;span class="bad-cat">This is a BAD category&lt;/span></nowiki></tt>.
+
(Display Some Category Specific Text)
 +
 
 +
カテゴリ番号 '''5''' に属する各投稿に <code><nowiki><span class="good-cat-5">これはいいカテゴリです</span></nowiki></code> と表示し、それ以外の投稿には <code><nowiki><span class="bad-cat">これは悪いカテゴリです</span></nowiki></code> と表示:
  
 
<pre><?php if ( in_category(5) ) {
 
<pre><?php if ( in_category(5) ) {
echo '<span class="my-cat-5">This is a nice category</span>';
+
echo '<span class="my-cat-5">これはいいカテゴリです</span>';
 
} else {
 
} else {
echo '<span class="bad-cat">This is a BAD category</span>';
+
echo '<span class="bad-cat">これは悪いカテゴリです</span>';
 
}
 
}
 
?></pre>
 
?></pre>
  
Unfortunately, in_category doesn't understand category child-parent relationships. If, for example, category 11 (bananas) is a child of category 2 (fruits), in_category('2') will return FALSE when viewing post about bananas.
+
残念ながら、<code>in_category</code> はカテゴリの親子関係を判断できません。例えばカテゴリ 11(バナナ)がカテゴリ 2(果物)の子カテゴリである場合に、バナナについての投稿を表示しているとき、<code>in_category('2')</code> は FALSE を返します。
So if you want the same text to be applied to the category AND all its sub-categories, you'll have to list them all.
+
あるカテゴリとその全てのサブカテゴリに同じテキストを表示したいなら、その全てを書き出す必要があります。
Syntax like in_category(2,11) is not allowed. You'll have to use PHP || (logical OR) && (logical AND) in the expression.
+
<code>in_category(2,11)</code> のような書き方はできません。PHP の式で <code>||</code>(論理和) <code>&&</code>(論理積) を使わなければなりません。(参考: [http://www.php.net/manual/ja/language.operators.php 演算子])
<pre><?php if ( in_category(2) || in_category (11) || in_category (12)[more categories abouth other fruits - this can get messy] ) {
+
 
echo '<span class="fruits">This is about different kinds of fruits</span>';
+
<pre><?php if ( in_category(2) || in_category (11) || in_category (12) [他にも果物のカテゴリがあれば - 面倒] ) {
 +
echo '<span class="fruits">いろいろな種類の果物について</span>';
 
} else {
 
} else {
echo '<span class="bad-cat">Not tasty! Not healthy!</span>';
+
echo '<span class="bad-cat">おいしくない!健康的じゃない!</span>';
 
}
 
}
 
?></pre>
 
?></pre>
  
== Use OUTSIDE The Loop ==
+
=== ループ外で使う ===
 +
(Use OUTSIDE The Loop)
  
Normally, this tag must be used inside [[The Loop]] because it depends on a WordPress PHP variable (<tt>$post</tt>) that is assigned a value only when The Loop runs.  However, you can ''manually'' assign this variable and then use the tag just fine.
+
通常、このタグは[[The Loop|ループ]]の内側で使わなければなりません。ループ中でのみ値が与えられる WordPress PHP 変数(<code>$post</code>)が必要だからです。しかし、この変数に''手動で''値を与え、このタグをちゃんと使えるようにもできます。
  
For example, suppose you want a <tt>single.php</tt> [[Templates|Template File]] in your [[Using Themes|Theme]] that will display a ''completely different'' page depending on what category the individual post is in. Calling <tt>in_category()</tt> from within The Loop may not be convenient for your Template.  So use the following as your Theme's <tt>single.php</tt>.
+
例えば[[Using Themes|テーマ]]内で、個々の投稿が属するカテゴリによって全く別のページを表示する <code>single.php</code> [[テンプレート|テンプレートファイル]]を使い分けたいとしましょう。<code>single.php</code> の中にあるループの中で <code>in_category()</code> を呼び出すのでは、都合が悪いですね。そこで、テーマの <code>single.php</code> を次のように使います。
  
 
<pre><?php
 
<pre><?php
49行目: 57行目:
 
  ?></pre>
 
  ?></pre>
  
This will use <tt>single2.php</tt> as the Template if the post is in category '''17''' and <tt>single1.php</tt> otherwise.
+
カテゴリ '''17''' に属する投稿のときはテンプレートとして <code>single2.php</code> を使い、それ以外では <code>single1.php</code> を使います。
  
=== Parameters ===
+
== パラメータ ==
; category_id : (integer)  The category ID of the category for which you wish to test.  The parameter may either be passed as a bare integer or as a string:
+
(Parameters)
:*<tt>in_category(5)</tt>
+
 
:*<tt>in_category('5')</tt>
+
; category_id  
 +
: (整数) 検査したいカテゴリのカテゴリID。パタメータは、整数むき出しでも文字列として書いてもどちらでも構いません:
 +
:*<code>in_category(5)</code>
 +
:*<code>in_category('5')</code>
 +
 
 +
==プラグインオプション==
 +
(Plugin Options)
  
==Plugin Options==
 
 
Eventually, someone will make a clever plugin that will do all of this automatically.  At that point this example will become obsolete. However, the [http://boren.nu/downloads/custom_post_templates.phps Custom Post Templates Plugin] allows for creation of templates for single posts.  It also shows an example of how to add a template which is used for ''all'' posts in a given category, not just a single post.  That example is commented out in the plugin by default but can be easily implemented by uncommenting the appropriate lines.
 
Eventually, someone will make a clever plugin that will do all of this automatically.  At that point this example will become obsolete. However, the [http://boren.nu/downloads/custom_post_templates.phps Custom Post Templates Plugin] allows for creation of templates for single posts.  It also shows an example of how to add a template which is used for ''all'' posts in a given category, not just a single post.  That example is commented out in the plugin by default but can be easily implemented by uncommenting the appropriate lines.
  
== Related ==
+
== 外部資料 ==
  
 +
* [http://www.php.net/manual/ja/language.operators.php PHPマニュアル &raquo; 第15章 演算子]
 +
 +
== 関連 ==
 +
(Related)
 +
 +
{{DEFAULTSORT:in_category}}
 
{{Tag Category Tags}}
 
{{Tag Category Tags}}
  
 
{{PHP Function Tag Footer}}
 
{{PHP Function Tag Footer}}
 +
 +
[[en:Template Tags/in_category]]

2007年7月20日 (金) 23:06時点における版

原文・最新版: WordPress Codex » in_category

説明

(Description)

指定したカテゴリに現在の投稿が属するとき、true を返します。通常、このタグはループの中で使いますが、ループ外で使いたい場合は、事前に変数 $post の値をセットしておく必要があります。

使い方

(Usage)

例えば、現在処理中(ページを生成中)の投稿が、あるカテゴリID に属するときにのみ、特定の PHPHTML を動作させたい場合には、これで 'category_id' を指定します。

<?php if ( in_category('category_id') ): ?>
  // ここにカテゴリ特有の PHP/HTML を書く
<?php endif; ?>

用例

(Examples)

カテゴリ特有のテキストを表示

(Display Some Category Specific Text)

カテゴリ番号 5 に属する各投稿に <span class="good-cat-5">これはいいカテゴリです</span> と表示し、それ以外の投稿には <span class="bad-cat">これは悪いカテゴリです</span> と表示:

<?php if ( in_category(5) ) {
echo '<span class="my-cat-5">これはいいカテゴリです</span>';
} else {
echo '<span class="bad-cat">これは悪いカテゴリです</span>';
}
?>

残念ながら、in_category はカテゴリの親子関係を判断できません。例えばカテゴリ 11(バナナ)がカテゴリ 2(果物)の子カテゴリである場合に、バナナについての投稿を表示しているとき、in_category('2') は FALSE を返します。 あるカテゴリとその全てのサブカテゴリに同じテキストを表示したいなら、その全てを書き出す必要があります。 in_category(2,11) のような書き方はできません。PHP の式で ||(論理和) &&(論理積) を使わなければなりません。(参考: 演算子

<?php if ( in_category(2) || in_category (11) || in_category (12) [他にも果物のカテゴリがあれば - 面倒] ) {
echo '<span class="fruits">いろいろな種類の果物について</span>';
} else {
echo '<span class="bad-cat">おいしくない!健康的じゃない!</span>';
}
?>

ループ外で使う

(Use OUTSIDE The Loop)

通常、このタグはループの内側で使わなければなりません。ループ中でのみ値が与えられる WordPress の PHP 変数($post)が必要だからです。しかし、この変数に手動で値を与え、このタグをちゃんと使えるようにもできます。

例えばテーマ内で、個々の投稿が属するカテゴリによって全く別のページを表示する single.php テンプレートファイルを使い分けたいとしましょう。single.php の中にあるループの中で in_category() を呼び出すのでは、都合が悪いですね。そこで、テーマの single.php を次のように使います。

<?php
 $post = $wp_query->post;
 if ( in_category('17') ) {
 include(TEMPLATEPATH . '/single2.php');
 } else {
 include(TEMPLATEPATH . '/single1.php');
 }
 ?>

カテゴリ 17 に属する投稿のときはテンプレートとして single2.php を使い、それ以外では single1.php を使います。

パラメータ

(Parameters)

category_id
(整数) 検査したいカテゴリのカテゴリID。パタメータは、整数むき出しでも文字列として書いてもどちらでも構いません:
  • in_category(5)
  • in_category('5')

プラグインオプション

(Plugin Options)

Eventually, someone will make a clever plugin that will do all of this automatically. At that point this example will become obsolete. However, the Custom Post Templates Plugin allows for creation of templates for single posts. It also shows an example of how to add a template which is used for all posts in a given category, not just a single post. That example is commented out in the plugin by default but can be easily implemented by uncommenting the appropriate lines.

外部資料

関連

(Related)


カテゴリータグ: the_category(), the_category_rss(), single_cat_title(), category_description(), wp_dropdown_categories(), wp_list_categories(), get_the_category(), get_the_category_by_ID(), get_category_by_slug(), get_the_category_list(), get_category_parents(), get_category_link(), is_category(), in_category()


テンプレートタグへの PHP 関数型パラメータの渡し方関数リファレンステンプレートタグ目次もご覧ください。