タームスラッグからタームIDを取得したい
WordPressカテゴリーの場合、スラッグから情報を取得したいならget_category_by_slug関数を使えばよいのですが、カスタムタクソノミーの場合はそうはいきません。
WordPressのカスタムタクソノミーのタームからIDを取得する方法はいくつかありますが、個人的にget_term_by関数を使うのが簡単だと思います。
get_term_by 関数で取得する
参考 関数リファレンス/get term by – WordPress codex 日本語版
もちろんCodexで公式に解説されているのですが、ターム情報を代入するところまでしか説明してくれていないので少し分かりづらいです。
get_term_by 関数は以下のように使います。
<?php get_term_by( $field, $value, $taxonomy, $output, $filter ) ?>
戻り値は以下のとおり。
- term_id
- name
- slug
- term_group
- term_taxonomy_id
- taxonomy
- description
- parent
- count
(戻り値についての詳細はCodexを参考にしてください)
$field, $value, $taxonomy が最低限必須の引数なので、今回はこの3つの引数のみ指定して実際に使ってみます。
book というタクソノミーに属する novel というスラッグのタームから、ターム情報を取得してみたいと思います。
<?php
// ターム情報を取得して、$term に代入
// スラッグから指定したいのでfieldにはslugを指定
$term = get_term_by( 'slug', 'novel', 'book');
// ターム情報からタームIDを取り出して代入
$term_id = $term->term_id;
?>
<p>ターム名「<?php echo $term->name ?>」のタームIDは「<?php echo $term_id ?>」です。</p>
$term にターム情報を代入したあとは、$term->nameでターム名を、$term->description でターム説明文を取り出すことも可能です。
この関数のget_category_by_slugとの大きな違いは、何から情報を取得したいかを選べる点です。
第一引数には、「slug」 のほかに「name」 「id」 「term_taxonomy_id」のいずれかが指定でき、第二引数には「その値」が指定できます。
第一引数に slug を指定した場合、プログラム的には「じゃあなんていうスラッグから情報を取得したいの? 第二引数で教えてくれ」となっているわけですね。
広告