WordPressにおいて、カスタムタクソノミーもカテゴリーと同じように扱うことができますが、割と使用する関数や変数が異なりややこしいので、ここは通常の「カテゴリー」に絞ります。
- カテゴリーID
- カテゴリー名(ラベル)
- カテゴリー説明(概要)
- カテゴリーURL
- カテゴリーベースネーム(スラッグ)
- カテゴリーごとの投稿数
- カテゴリーのループ
- 親カテゴリーのデータ
- 最上位のカテゴリーデータ
- 特定のカテゴリーデータ
カテゴリーID
■MTの場合
[HTML]
<$MTCategoryID$>
[/HTML]
■Wordpressの場合
[PHP]
//echoなし:パターン1(※1)
$cat;
//echoなし:パターン2
get_cat_ID('カテゴリー名');
//echoなし:パターン3(※2)
$hoge->term_id;
[/PHP]
カテゴリー名(ラベル)
■MTの場合
[HTML]
<$MTCategoryLabel$>
[/HTML]
■Wordpressの場合
[PHP]
//echoあり(※1)
single_cat_title();
//echoなし:パターン1(※1)(第2引数をfalseにする)
single_cat_title('', false);
//echoなし:パターン2(※3)
get_cat_name($cat);
//echoなし:パターン3(※2)
$hoge->name;
[/PHP]
カテゴリー説明(概要)
■MTの場合
[HTML]
<$MTCategoryDescription$>
[/HTML]
■Wordpressの場合
[PHP]
//echoなし:パターン1(※3)
category_description($cat);
//echoなし:パターン2(※2)
$hoge->description;
[/PHP]
カテゴリーURL
■MTの場合
[HTML]
<$MTCategoryArchiveLink$>
[/HTML]
■Wordpressの場合
[PHP]
//echoなし(※3)
get_category_link($cat);
[/PHP]
カテゴリーベースネーム(スラッグ)
■MTの場合
[HTML]
<$MTCategoryBasename$>
[/HTML]
■Wordpressの場合
[PHP]
//echoなし:パターン1(※4)
$category_name;
//echoなし:パターン2(※2)
$hoge->slug;
[/PHP]
カテゴリーごとの投稿数
WordPressにおいて、ダイレクトに投稿数を取得できる関数や変数はなさそうです。
一旦get_category()やget_categories()などでデータを取得した後、->countで取り出してください。
■MTの場合
[HTML]
<$MTCategoryCount$>
[/HTML]
■Wordpressの場合
[PHP]
//echoなし(※2)
$hoge->count;
[/PHP]
カテゴリーのループ
■MTの場合
[HTML]
<!--パターン1:すべてのカテゴリーを階層関係なく取得-->
<MTCategories>
~
</MTCategories>
<!--パターン2:すべてのトップレベルカテゴリーを取得-->
<MTTopLevelCategories>
~
</MTTopLevelCategories>
<!--パターン3:特定のカテゴリーのサブカテゴリーを取得-->
<mt:SubCategories category="親カテゴリー名">
~
</mt:SubCategories>
[/HTML]
■Wordpressの場合
基本的にget_categoriesを使えばOKです。条件次第でいろいろな取得ができます。
条件のパラメータについてはこちらのサイトを参照。
get_categories:WordPress私的マニュアル
[PHP]
//echoあり(リスト形式で取得できる)
wp_list_categories('title_li=');
//echoなし:パターン1:すべてのカテゴリーを階層関係なく取得
$hoges = get_categories('get=all');
foreach($hoges as $hoge){
~
}
//echoなし:パターン2:すべてのトップレベルカテゴリーを取得
$hoges = get_categories('parent=0');
foreach($hoges as $hoge){
~
}
//echoなし:パターン3:特定のカテゴリーのサブカテゴリーを取得
$hoges = get_categories('parent=親カテゴリーID');
foreach($hoges as $hoge){
~
}
[/PHP]
親カテゴリーのデータ
■MTの場合
[HTML]
<MTParentCategory>
~
</MTParentCategory>
[/HTML]
■Wordpressの場合
[PHP]
//echoなし
$hoge= get_category($cat); //※3
if ($hoge->parent) {
$hoge=get_category($hoge->parent);
}
~
[/PHP]
最上位のカテゴリーデータ
現在のカテゴリーの最上位カテゴリーのデータを取得する方法です。
■MTの場合
[HTML]
<MTTopLevelParent>
~
</MTTopLevelParent>
[/HTML]
■Wordpressの場合
[PHP]
//echoなし
$hoge = get_category($cat); //※3
while($hoge->parent) {
$hoge=get_category($hoge->parent);
}
~
[/PHP]
特定のカテゴリーデータ
■MTの場合
標準だとやり方は無いのかな?
プラグインがこちらのサイトで紹介されていました。
Movable Type で特定のカテゴリの情報を取り出せる SpecificCategory プラグインを公開します-bit part blog-bit part
■Wordpressの場合
[PHP]
//echoなし:パターン1
$hoge = get_category($cat); //※3
//echoなし:パターン2
$hoge =get_category_by_slug("スラッグ名");
[/PHP]
注釈
※1
$catは”カテゴリーテンプレート”で使用できるグローバル変数。カテゴリーIDが取得できます。
また、single_cat_title()も”カテゴリーテンプレート”で使用できる関数。
※2
get_category()やget_the_category()、get_categories()でデータを取得した場合。$hogeは任意の変数。
〇get_category()で取得した場合。
$hoge = get_category($cat);
$hoge->term_id;
$hoge->name;
※引数($catの部分)には"カテゴリーID"が入ります。
〇get_the_category()で取得した場合
$hoges = get_the_category($id);
foreach($hoges as $hoge){
$hoge->term_id;
$hoge->name;
}
※引数($idの部分)には"投稿ID"が入ります。
※3
引数にはカテゴリーIDを渡します。
カテゴリーテンプレートであれば、$catでOK。
$catについては※1参照。
※4
$category_nameはカテゴリーテンプレートや投稿テンプレートで使用できるグローバル変数。
$category_nameは投稿ページで親カテゴリーがある場合は連結されて表示されるので注意。
詳しくはこちらのサイトを参照。
$category_name:WordPress私的マニュアル