ホームページをSNSでシェアしたとき、サムネイルや説明文がきれいに出るかどうかを決めるのがOGPタグです。
トップページや固定ページ、記事詳細ページは意識して設定することが多いですが、カテゴリーページは盲点になりやすいです。
実際にSEOの見直しをしていた際、ツールで確認してみたらカテゴリーページ系のOGPが全く出ていないことに気づきました。
なぜカテゴリーページだけ出なかったのか
AIOSEOを使っている場合、トップページ・固定ページ・投稿詳細ページのOGPはデフォルトの設定範囲内で対応できます。
ただカテゴリーページはAIOSEOの無料版では個別のOGP設定ができないという制限があります。加えてテーマ側のテンプレートでもカテゴリーページのOGP出力が考慮されていなかったため、完全に抜け落ちていた状態でした。
カテゴリーページ単体でSNSシェアされることは確かに多くはないですが、実績一覧(/works/)やブログ一覧ページなどはシェアされる可能性が十分あります。
対処法:header.phpに直接PHPで書く
AIOSEOの設定で解決しようとすると有料版が必要になるため、header.phpに直接PHPでカテゴリーページ用のOGPを出力する処理を追加しました。
<?php if ( is_category() ) :
$cat = get_queried_object();
$cat_title = esc_attr( $cat->name ) . ' | ' . get_bloginfo( 'name' );
$cat_desc = ! empty( $cat->description )
? esc_attr( $cat->description )
: esc_attr( get_bloginfo( 'description' ) );
$cat_url = esc_url( get_category_link( $cat->term_id ) );
$ogp_image = 'https://example.com/ogp.jpg'; // 自社OGP画像URL
?>
<meta property="og:type" content="website" />
<meta property="og:title" content="<?php echo $cat_title; ?>" />
<meta property="og:description" content="<?php echo $cat_desc; ?>" />
<meta property="og:url" content="<?php echo $cat_url; ?>" />
<meta property="og:image" content="<?php echo $ogp_image; ?>" />
<meta property="og:locale" content="ja_JP" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="<?php echo $cat_title; ?>" />
<meta name="twitter:description" content="<?php echo $cat_desc; ?>" />
<meta name="twitter:image" content="<?php echo $ogp_image; ?>" />
<?php endif; ?>ポイントはカテゴリーの説明文($cat->description)をOGPのdescriptionに使うことです。説明文が空の場合はサイトのキャッチフレーズにフォールバックするようにしています。
カテゴリーの説明文を忘れずに設定する
このコードを入れた上で、WordPress管理画面の「投稿 → カテゴリー」から各カテゴリーの説明文を入れておくことが大切です。説明文がそのままOGPのdescriptionになります。
まとめ
- トップ・固定ページ・記事詳細はSEOプラグインで対応できる
- カテゴリーページはAIOSEO無料版では対応できない盲点
- header.phpにPHPで直接書くのが確実な解決策
- カテゴリーごとに説明文を設定しておくとOGPの品質が上がる
意外と見落とされがちな部分なので、WordPressサイトを運用している方は一度確認してみてください。




