成果物をまとめて確認する
[成果物]WordPressでタグ機能を活用!投稿をさらに細かく分類する実装テクニック
【WordPressでタグ機能を活用!投稿をさらに細かく分類する実装テクニック】の成果物です。投稿の学びを終えた時点の構成を一覧でご確認いただけます。
前回の記事では、WordPressのカテゴリー機能を使って投稿を分類し、カテゴリーごとに個別のページを作成する方法を学習しました。
今回は、タグ機能の活用について詳しく解説します。カテゴリーとタグは異なる性質を持つ分類方法で、カテゴリーが「投稿の種類」を表すのに対し、タグは「投稿の特徴や属性」を表現するのが一般的です。
なお、カテゴリーをより細かく分類したい場合は、タグではなく親子カテゴリーを使用します。例:「商品情報」→「家電」→「テレビ」のような階層構造です。
タグは複数の投稿に設定することで、カテゴリーとは別の観点から柔軟な分類が可能になります。
今回の目標
page-news.php
にタグ一覧を追加表示するtag.php
でタグ別投稿一覧を作成する目次
カテゴリーの場合は、管理画面→投稿→カテゴリーから事前登録し投稿の編集画面で選択しましたが、タグは投稿の編集画面から直接登録できるのが特徴です。
もちろん管理画面→投稿→タグで事前登録も可能ですが、タグの性質上、投稿作成と同時に追加していく使い方が一般的です。
カテゴリーは事前登録の際にスラッグを設定しましたが、タグは投稿画面から直接追加するため、タグのスラッグを意識して使うことはほとんどありません。
もちろんタグにもスラッグは自動で付けられますが、多くの場合はタグ名=タグのスラッグとして運用されます。そのため、タグ名は日本語でも英数字でも、URLに使いやすい形で付けるのが実用的です。
次のようにタグを設定して、実際の動作を確認していきます。
投稿日 | カテゴリー | タイトル | タグ |
---|---|---|---|
2025年07月15日 | 新店舗 | 新店舗オープンのお知らせ | 新店舗 |
2025年07月14日 | WEB/SNS | SNS総フォロワー100人を達成しました | SNS |
2025年07月13日 | イベント | WordPress講習会開催のお知らせ | WordPress,講習会 |
2025年07月12日 | 休業 | 夏季休暇のお知らせ | 長期休暇 |
2025年07月12日 | WEB/SNS | Webサイト開設のお知らせ | よろしく,ホームページ |
2025年07月11日 | 未分類 | Hello world! | よろしく |
get_tags()
でタグ一覧を取得できます。パラメーターやタグ取得後の処理は、カテゴリー(get_categories()
)とほぼ同じです。
page-news.phpを以下のように修正します。
<?php get_header();?>
<?php the_content(); ?>
<?php
// カテゴリー一覧を取得
$categories = get_categories([
'hide_empty' => true, // 投稿がないカテゴリーは除外
]);
echo '<h2>カテゴリー</h2>' . PHP_EOL;
echo '<ul class="category-list">' . PHP_EOL;
// カテゴリーごとにループ
foreach ($categories as $category) {
echo '<li><a href="'.get_term_link($category->term_id).'">'.$category->name.'</a></li>'.PHP_EOL;
}
echo '</ul>' . PHP_EOL;
// タグ一覧を取得
$tags = get_tags([
'hide_empty' => true, // 投稿がないタグは除外
]);
echo '<h2>タグ</h2>' . PHP_EOL;
echo '<ul class="tag-list">' . PHP_EOL;
// タグごとにループ
foreach ($tags as $tag) {
echo '<li><a href="'.get_term_link($tag->term_id).'">'.$tag->name.'</a></li>'.PHP_EOL;
}
echo '</ul>' . PHP_EOL;
?>
<p>※このページは page-news.php テンプレートで表示されています</p>
<?php get_footer();?>
タグは横並びにすることが多いので、main.cssに次のスタイルを追加します。
.tag-list {
display: flex;
flex-wrap: wrap;
gap: 1.0rem;
list-style: none;
}
並び順を変えたいときは、カテゴリーで使ったプラグイン「Category Order and Taxonomy Terms Order
」は使えません。何より、タグはカテゴリーに比べて多くなりがちです。1つ1つ手動で並び替えるのは実用的ではありません。タグ名や紐づいた投稿数が多い順などに並び替えるのが一般的です。
$tags = get_tags([
'hide_empty' => true, // 投稿がないタグは除外
'orderby' => 'name',
'order' => 'asc',
]);
orderby
には以下の値を指定できます:
'name'
: タグ名順'count'
: 投稿数順'slug'
: スラッグ順'ID'
: ID順'description'
: 説明順Category Order and Taxonomy Terms Order
プラグインを導入している場合でも、管理画面でタグの並び替えはできません。
しかし、内部的にget_tags
の並び替えが行われています。具体的にはterm_order
という項目で並び替えが行われます。そしてget_tags
のorderby
指定よりもterm_order
の並び替えが優先されます。
カテゴリーの場合、管理画面で並び替えを行うことができ、並び替えを行った際、term_order
に並び順に沿った値がセットされます。結果として、管理画面と同じ並びで表示されます。ですが、タグの場合はterm_order
を変更する方法がありません。
ですが今度は、get_categories
がterm_order
で並ばなくなります。get_categories
にもorderby
を明示的に設定する必要があります。
// カテゴリー
$categories = get_categories([
'hide_empty' => true, // 投稿がないカテゴリーは除外
'orderby' => 'term_order', // 管理画面と同じ並び順
'order' => 'asc', // 管理画面と同じ並び順
]);
// タグ
$tags = get_tags([
'hide_empty' => true, // 投稿がないタグは除外
'orderby' => 'name',
'order' => 'asc',
]);
これにより、タグページのURLは以下のような構造になります。
http://sample.local/news/tag/よろしく
http://sample.local/news/tag/sns
http://sample.local/news/tag/講習会
カテゴリーの場合、category.phpで一覧を表示しました。 タグの場合は、tag.phpがテンプレートとなります。
tag.phpはcategory.phpとほぼ同じ構造です。
<?php get_header();?>
<?php
// 現在表示中のターム情報を取得
$target = get_queried_object();
// そのタグに属する投稿を取得
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'tag__in' => [$target->term_id],
];
$query = new WP_Query($args);
echo '<ul class="post-list">' . PHP_EOL;
while ($query->have_posts()) {
$query->the_post();
echo '<li>'.
'<span class="date">'.get_the_date('Y年m月d日').'</span>'.
'<span class="tag">'.$target->name.'</span>'.
'<a href="'.get_the_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'.
'</li>'.PHP_EOL;
}
wp_reset_postdata(); // 投稿データをリセット
echo '</ul>' . PHP_EOL;
?>
<p>※このページは tag.php テンプレートで表示されています</p>
<?php get_footer();?>
重要な違いは、category__in
をtag__in
に変えるだけです。
// カテゴリーの場合
'category__in' => [$target->term_id],
// タグの場合
'tag__in' => [$target->term_id],
カテゴリーのときはis_category()
で判定しました。 タグのときはis_tag()
を使用します。
header.phpを変更して、適切なタイトルを表示するようにします。
<?php
if (is_category() || is_tag()) {
$term = get_queried_object();
echo '<h1 class="page-title">'.$term->name.'のお知らせ</h1>'.PHP_EOL;
} elseif (!is_front_page()) {
echo '<h1 class="page-title">'. get_the_title() .'</h1>'.PHP_EOL;
}
?>
<?php
if (is_category()) {
$category = get_queried_object();
echo '<h1 class="page-title">'.$category->name.'のお知らせ</h1>'.PHP_EOL;
} elseif (is_tag()) {
$tag = get_queried_object();
echo '<h1 class="page-title">タグ「'.$tag->name.'」のお知らせ</h1>'.PHP_EOL;
} elseif (!is_front_page()) {
echo '<h1 class="page-title">'. get_the_title() .'</h1>'.PHP_EOL;
}
?>
パターン2の場合、以下のようなタイトルが表示されます:
どちらのパターンを選ぶかは、サイトの用途や好みに応じて決めてください。
今回の記事では、WordPressのタグ機能を活用した実装方法を学習しました。
get_tags()
: タグ一覧の取得(get_categories()
とほぼ同じ使い方)tag.php
: タグ別投稿一覧のテンプレート(category.phpとほぼ同じ構造)tag__in
: WP_Query
でタグを指定する際のパラメーターis_tag()
: タグページかどうかを判定する条件分岐get_queried_object()
: 現在表示中のターム情報を取得(カテゴリーでもタグでも同じ)前回の記事で学習したように、WordPressではカテゴリーもタグも「ターム」として扱われます。そのため、基本的な処理はほとんど同じコードで動作します。
機能 | カテゴリー | タグ |
---|---|---|
一覧取得 | get_categories() | get_tags() |
テンプレート | category.php | tag.php |
WP_Query | category__in | tag__in |
条件分岐 | is_category() | is_tag() |
ターム情報取得 | get_queried_object() | get_queried_object() |
get_queried_object()
やget_term_link()
などの関数は、カテゴリーでもタグでも全く同じように使えるのが特徴です。
カテゴリーとタグは異なる観点から投稿を分類するため、組み合わせることでユーザーが求める情報をより効率的に見つけられるWebサイトが構築できます。
前回の記事で、投稿機能は「お知らせ」以外にも商品やメニューに応用できることを紹介しました。ここで、より具体的な活用例を見てみましょう。
カテゴリー(大分類)
タグ(詳細分類・横断的な属性)
カテゴリー(大分類)
タグ(味・特徴・対応)
このように分類することで、ユーザーは「衣類」カテゴリーから「夏物」タグで季節商品を探したり、「麺類」カテゴリーから「辛い」タグで好みの味を見つけたりできます。
カテゴリーで大まかに絞り、タグでさらに詳細に探すという段階的な検索により、目的の情報にたどり着きやすくなります。
次回は、投稿を日付別で表示する方法について解説します。
の投稿一覧を表示する実装を行います。
WordPressの日付アーカイブ機能を活用して、時系列でのコンテンツ管理をより使いやすくする方法をお楽しみに!
この記事で作成した成果物は、以下のページでまとめて確認することができます。
WordPressでカテゴリーごとに個別のページを作成する実用的なサイト構築テクニック。投稿をカテゴリー別に分けて表示することで、大量の投稿があっても見やすく、ユーザーが興味のあるカテゴリーだけを効率的に閲覧できるWebサイトを構築できます。
WordPressで日付別アーカイブ機能を実装する方法を詳しく解説します。月別・年別・日別での投稿一覧表示、パーマリンク設定の変更、時系列による投稿の絞り込み方法など、お知らせサイトなどで重要な日付管理機能の構築テクニックを実践的に学べる内容です。
WordPressを効率よく確実に学ぶためには、学習の順序が大切です。知識が自然に積み上がるよう、学習ステップに沿って記事を順番に並べています。
学習ストーリー第32話まで掲載中