Yoast SEOのメインカテゴリを取得する関数【Wordpress】
※本記事のコードは参考用です。使用前にご自身で動作確認をお願いします。
はじめに
WordPressサイトでYoast SEOプラグインを使っている場合、記事に「メインカテゴリ(Primary Category)」を設定できます。しかし、その値をテーマやテンプレート内で取得したい場合、少しコードが必要になります。
この記事では、Yoast SEOのメインカテゴリを取得するための WPSEO_Primary_Term
クラスの使い方と、再利用しやすい関数の作成方法について解説します。
WPSEO_Primary_Term
WPSEO_Primary_Term
は、Yoast SEOが提供する内部クラスで、投稿に紐づけられた「メインカテゴリ(Primary Term)」を取得するために使います。
再利用可能な関数を作る
以下のように関数化することで、どこからでも簡単に使えるようになります。リンク付きで出力するか、タームだけを出力するかを引数で設定できます。
また、もしYoastSEOのプラグインを無効化してしまった場合やメインカテゴリーが設定されていない場合のフォールバックも設定しています。
function the_primary_category( $linked = true, $post_id = null ) {
if ( is_null( $post_id ) ) {
$post_id = get_the_ID();
}
$term = null;
if ( class_exists( 'WPSEO_Primary_Term' ) ) {
$primary_term = new WPSEO_Primary_Term( 'category', $post_id );
$primary_term_id = $primary_term->get_primary_term();
$term = get_term( $primary_term_id );
if ( is_wp_error( $term ) ) {
$term = null;
}
}
if ( ! $term ) {
$categories = get_the_category( $post_id );
if ( ! empty( $categories ) ) {
$term = $categories[0];
}
}
if ( $term ) {
$name = esc_html( $term->name );
if ( $linked ) {
$url = esc_url( get_category_link( $term->term_id ) );
echo '<a href="' . $url . '">' . $name . '</a>';
} else {
echo $name;
}
}
}
使い方
テンプレート内で以下のように呼び出すだけでOKです。
リンク付きで表示したい場合:
<?php the_primary_category(); ?>
リンクなしで表示したい場合:
<?php the_primary_category(false); ?>
まとめ
Yoast SEOの「メインカテゴリ」を取得したい場合は WPSEO_Primary_Term
クラスを活用しましょう。関数化しておけば、テーマ内のどこでも簡単に使い回すことができます。
SEOに関する細かな設定をテーマに反映させたい方は、ぜひ活用してみてください。