
先日のエントリでは、カテゴリ一覧を取得するために、
<?php
function get_all_category_all() {
if ( ! $cat_all = wp_cache_get( ‘all_category_all’, ‘category’ ) ) {
$cat_all = get_terms( ‘category’, ‘fields=all&get=all’ );
wp_cache_add( ‘all_category_all’, $cat_all, ‘category’ );
}
return $cat_all;
}
?>
という関数をつくってカテゴリ一覧を取得していましたが、わざわざそんな関数を作らなくても、get_categories() という関数がありました。なので先日のエントリで、
<?php
$terms = get_all_category_all();
foreach ($terms as $term) { ?>
<li><a href=”<?= get_category_link($term->term_id); ?>”>
<?= $term->name; ?>
</a></li>
<?php } ?>
としていた部分の、
$terms = get_all_category_all();
は、
$terms = get_categories();
にしてしまえば、自作の関数(get_all_category_all())なんかいりませんね。
結局 get_terms() は何なのさ?
結局、get_categories() は、内部で get_terms() を呼び出しているようです。get_terms() はタクソノミ全般を扱う関数のようで、デフォルトで実装されている「カテゴリ」というタクソノミに限定せず、タクソノミ全般を扱うための関数みたい。
get_categories() は get_terms() のラッパー。
なので、標準のタクソノミ(カテゴリ)を使う分には、get_terms() じゃなくて、get_categories() を使う方が簡単ですね。
でわでわ。
[…] カテゴリ一覧を出力させるコードの参考にさせていただいた。この記事のあとにWordPress でカテゴリ一覧を取得する場合は get_terms() じゃなくて get_categories()…という記事を書いておられていて、確かにその通りなのだけど、rel属性が付加されて、その属性値(category tag)だとHTML5でinvalidになってしまう。WordPressのカテゴリーリストからrel属性をカットする | LD.ymst.net | 郡山市でホームページを制作している人のブログのコードをfunctions.phpに書くと消せるらしいけど、当時function.php(sが抜けてる)というファイル名で編集しており、全然反映されねー!ってなり、get_terms()で出力させている。パフォーマンスに影響を与えないのであれば、このままでいいかなと思っている。ちなみに、現時点で当サイトではfunctions.phpは使用していない。 […]
[…] ■WordPress でカテゴリ一覧を取得する場合は get_terms() じゃなくて get_categories() を使った方がラクチン http://dev.ontheroad.jp/archives/2805 […]