
Yoast SEOプラグインの「メインカテゴリー機能」を使ってみる
複数のカテゴリーを設定している場合、Yoast SEOの「メインカテゴリー」設定を使うと、どのカテゴリーを優先して表示するかを決められます。
ただ、WordPressの標準機能ではないため、テーマやプラグインの設定で少し工夫が必要になります。
そこで、WordPressの投稿一覧ページで、現在表示されている記事に関連するカテゴリをリストとして表示させる方法を紹介します。
まず、投稿一覧としては見た目はとりあえずこんな感じで。
カテゴリーを複数選択した場合、作り方によりますが、大体こんな感じになるかと思います。
こういう作りを求める方も恐らくいるかと思います。
ですが、メインで設定したカテゴリーを一番先頭に置きたいって言うことありますよね。

一番上の一覧の投稿記事を見てみましょう。
順番は「カテゴリー1」「カテゴリー2」という順番になっています。
と言うわけで、これを「カテゴリー2」をメインに設定して先頭に表記させようと思います。
まず、現在の記事のメインカテゴリーIDを取得します。
メインカテゴリーのIDは、get_post_meta関数を使うと取得できます。
$main_cat = get_post_meta(get_the_ID(), '_yoast_wpseo_primary_category', true);
そして以下のソースがメインに設定した場合の一覧表示のさせ方です。
<ul>
<?php
// 現在の記事のメインカテゴリーIDを取得(Yoast SEO)
$main_cat = get_post_meta(get_the_ID(), '_yoast_wpseo_primary_category', true);
// カテゴリーの並び替え用
$sorted_cat = array();
// 各カテゴリーを取得して、メインカテゴリーを最初に配置
foreach ($categories as $category) {
$cat_id = $category->term_id;
$cat_name = $category->name;
// メインカテゴリーが設定されたら先頭に追加
$data_cat = array(
'cat_id' => $cat_id,
'cat_name' => $cat_name,
'cat_link' => get_category_link($cat_id)
);
if ($cat_id == $main_cat) {
// メインカテゴリーは最初に追加
array_unshift($sorted_cat, $data_cat);
} else {
// 他のカテゴリーは後から追加
$sorted_cat[] = $data_cat;
}
}
// カテゴリーを出力
foreach ($sorted_cat as $category) : ?>
<li><a href="<?php echo esc_url($category['cat_link']); ?>"><?php echo esc_html($category['cat_name']); ?></a></li>
<?php endforeach; ?>
</ul>
これで以下のように、「カテゴリー2」が前に出るようになると思います。

ぜひ参考にしてみてください。