【WordPress】タグ名・タグスラッグからタグIDを取得する方法【PHP】
※ これは別noteアカ(@fukuro_press)からの移転記事です。
WordPressでは投稿ページや固定ページに1つ以上のタグをつけられますが、そのタグには「タグID」というIDが割り振られています。
これが何の役に立つの? ということですが次のような場合に必要になります。
・記事一覧から特定のタグだけ持つ記事を表示する
・タグリンクの出力(get_tag_link)
・タグクラウドの作成(wp tag cloud)
特にWordPressプラグインやテーマを開発したりする場合はこういう知識が必要になってくると思います。
ただどうやってタグのスラッグや名前からタグIDを取ってくればいいのかはやり方を知らなければ悩んでしまうポイントと思います。
特にタグ名からIDを取得する方法は探しても中々見つからないので苦労しますがやり方さえ知ってしまえばとても簡単です。
ここではタグIDをスラッグと名前から取得する方法を紹介します。
スラッグからタグ名を取得するスラッグからタグ名を取得する
まずタグのスラッグからタグ情報を取得する方法です。
例えばあるタグのスラッグが「wordpress」だったときそのタグのIDを取得には次のコードのようにget_tags関数が使われます。
$tag = get_tags(array('slug' => 'wordpress'))[0];
$tag_id = $tag->term_id;
get_tags関数は渡された引数の条件に当てはまるタグ配列を返す関数で「array('slug'=> 'wordpress')」という連想配列を渡すことで「wordpress」というスラッグに当てはまるタグ(タグ配列の一番目)が取得できます。
そしてタグのIDは返されたタグの「term_id」を参照することで知ることができます。
スラッグ名からタグIDを取得する方法はこれだけです。
タグ名からタグIDを取得する方法
次にタグ名からタグIDを取得する方法ですがこれにはget_term_by関数が使われます。
使い方は次の通り
$tag = get_term_by('name', 'ワードプレス', 'post_tag');
$tag_id = $tag->term_id;
1つめの引数に「'name'」、2つめにはターム名、3つ目にタームの種類「'post_tag'」を渡すことでその名前をもつターム配列またはオブジェクトが取得可能です。
このコードでは「ワードプレス」というタグ名(スラッグではない)を持つタグオブジェクトを取得してそこから「term_id」にアクセスすることでタグIDを取得しています。
これは調べても中々やり方が出てこなかったので探すのに苦労しましたがやり方さえ知っていればとても簡単ですね。
get_term_by関数の詳しい使い方については関数リファレンス/get_term_by - WordPress Codex 日本語版に詳しく書いてあります。
まとめ
ここで紹介したタグIDを取得する方法は次の2つです。
・スラッグから取得 ( get_tags )
・名前から取得 ( get_term_by )
WordPressの関数についてはネット上で検索すると情報が少ないですがWordPress Codexで必要な情報は手に入ります。
それに加えて検索して必要な知識を集めていけば開発も進みやすいと思います。
プロフィール
普段はFukuro-PressというサイトでWordPressやサイト構築術について書いています。プラグインやテーマも開発したいなーと最近思っています。