条件にマッチしたタグオブジェクトの配列を取得します。ここでいうタグは、カスタムタクソノミーではなくデフォルトの投稿のタグを指します。(WordPressインストール時に最初から設定されているタグ)
get_tags($args);| 引数 | 必須/任意 | 引数に指定するもの |
|---|---|---|
| 第1引数 $args | 任意 | 取得するカテゴリーの条件(パラメーター)を配列で指定(文字列での指定も可能ですが配列で理解しておく方が柔軟性がありオススメです)。初期値: ''(空の文字列)初期値ではすべてのタグを取得します。 利用できる主なパラメーターは下記の通り。 orderby 返す値の順番を何順にするか指定、nameやcountなど。省略時はnameorder ASC/DESCを指定。ASCは昇順、DESCが降順。省略時はASChide_empty 真偽値を指定。trueなら記事件数が0のカテゴリーを除外。省略時はtrueinclude 取得するカテゴリーのIDを配列で指定。省略時は空の配列(指定なし)exclude 取得しないカテゴリーのIDを配列で指定。省略時は空の配列(指定なし)exclude_tree 子カテゴリーを含めて取得しないカテゴリーのIDを配列で指定number 取得件数の上限。省略時は全件name 取得したいカテゴリーの名前あるいはその配列slug 取得したいカテゴリーのスラッグあるいはその配列meta_query メタクエリの指定(カスタムフィールドを条件に取得)すべてのパラメーターは下記公式に記載があります。(英語) https://developer.wordpress.org/reference/classes/wp_term_query/__construct/ |
戻り値(返す値):条件にマッチしたタグオブジェクトの配列
取得したタグオブジェクトを配列として返します。foreachでループを回して配列から1つ1つ要素(タグのオブジェクト)を取り出してタグの名前を取得したりすることができます。
the_tags()はthe_terms()のラッパー関数です。the_tags()の内部でthe_terms()を実行しています。the_tags()は内部でthe_terms()を実行する際に、taxonomyの値をpost_tag(投稿に標準実装されているタグ)にデフォルトで指定します。
このオブジェクトが持つ主なプロパティ(中身)は以下の通りです。
term_id カテゴリーのIDname カテゴリーの名前slug カテゴリーのスラッグtaxonomy 所属するタクソノミーの名前(= category)description カテゴリーの説明文(管理画面からカテゴリーを追加する際の「説明」欄)count カテゴリーに所属する記事数
<?php
$args = [
'exclude' => [5, 10], // ID5と10のタグを除外
'orderby' => 'count', // 表示する際の順番をcount(記事数)を基準にする
'order' => 'DESC', // 表示順を降順(この場合、記事件数が多い順)にする
];
$tags = get_tags($args);
foreach ($tags as $tag) { // 配列から1つ1つ要素(タグオブジェクト)を取り出して処理
echo $tag->term_id; // タグのIDを取得して表示
echo $tag->name; // タグの名前を取得して表示
}
?>ニュースやブログページのサイドバーにタグ一覧を表示するなどで使われます。具体的なコードは下記「参考コード」を参考にしてください。
下記例では、タグの一覧をタグに紐づく記事が多い順番に表示するコードです。
取得した配列(タグオブジェクトの配列)からループ処理でタグオブジェクトを取り出し、そのオブジェクトから必要情報を取得してHTMLに埋め込んでいます。
<?php
$args = [
'orderby' => 'count',
'order' => 'DESC',
];
$tags = get_tags($args);
if (!empty($tags) && !is_wp_error($tags)) { // 空の配列あるいはエラーではないか
echo '<ul>';
foreach ($tags as $tag) {
echo '<li>';
echo '<a href="' . get_term_link($tag) . '">';
echo $tag->name;
echo '</a> (' . $tag->count . ')';
echo '</li>';
}
echo '</ul>';
}
?>※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。