get_termsの使い方
今までサイドバーウィジェットのタグクラウドを使っていたのですが、取得するデータにclassが振ってあったりと嫌な部分が多かったので自分で取得してみました。
タグクラウドやカテゴリ名を取得するときに便利なテンプレートタグがありました。
get_terms()を使う
デフォルトの使用法
<?php get_terms( $taxonomies, $args ) ?> <?php $taxonomies = array( 'post_tag', 'my_tax', );
$args = array( ‘orderby’ => ‘name’, ‘order’ => ‘ASC’, ‘hide_empty’ => true, ‘exclude’ => array(), ‘exclude_tree’ => array(), ‘include’ => array(), ‘number’ => ”, ‘fields’ => ‘all’, ‘slug’ => ”, ‘parent’ => ”, ‘hierarchical’ => true, ‘child_of’ => 0, ‘get’ => ”, ‘name__like’ => ”, ‘pad_counts’ => false, ‘offset’ => ”, ‘search’ => ”, ‘cache_domain’ => ‘core’ );
?>
さてこれは何かを見て行きましょう。
説明によるとデフォルト値はないとのこと、上記は例として使用
よくわからないので使ってみる。
<?php $category = get_terms('category','get=all'); foreach( $category as $value ) { echo '<li>' . $value -> name . '</li>'; } ?>
これでカテゴリ名を取得できました。
全てのカテゴリを取得したい場合は、【 get=all 】と記述してあげるとのこと。
次はリンク付きのカテゴリ一覧を取ってきてみましょう。
<?php $category = get_terms('category','get=all'); foreach( $category as $value ) { echo '<li><a href="' . get_category_link ( $value -> term_id ) . '">' . $value -> name . '</a></li>'; } ?>
因みに
get_terms(‘post_tag’);としてあげると投稿されたことのあるタグが取得できます。
さてこの $valueの中に何が代入されていっているのでしょう。
<?php $tags = get_terms( 'post_tag', 'get=all'); foreach( $tags as $value ) { print_r ($value); } ?>
結果
stdClass Object (
[term_id] => 10
[name] =>タグ名
[slug] => スラッグ
[term_group] => 0
[term_taxonomy_id] => 10
[taxonomy] => post_tag
[description] =>
[parent] => 0
[count] => 2
)
これらが配列で入れられます。
タグのIDを取得したい時は
<?php $tags = get_terms('post_tag', 'get=all'); foreach ( $tags as $value ) { echo '<li>' . $value . '</li>'; } ?>
とするとタグのIDが取ってこれますね。
ソートしたい場合は 【orderby】と【order】が使えます。
デフォルト値は記事トップに書いてありますがこれを変更してやります。
orderbyは【count】【name】【slug】【term_group】【none】【id】などが使えるそうです。
orderは【DESC】と【ASC】
<?php $categorys = get_terms('category', 'orderby=id&order=ASC'); foreach( $categorys as $category ) { echo '<li>' . $category -> name . '</li>'; } ?>
これでid順になりました。
今回このサイトのサイドバーのタグクラウドとカテゴリ一覧を作りました。
ウィジェットを使わないでやると出力結果を自由にできていいですね。
参考サイト:WordPress私的マニュアル