adjacent_posts_rel_link_wp_head() は、WordPress の <head> 内に前後の投稿への rel="prev" および rel="next" のリンクを自動的に追加するテンプレートタグです。
このタグを利用することで、検索エンジンが記事の前後関係を認識しやすくなり、SEO にも好影響を与えます。しかし、現在の WordPress では非推奨とされており、代わりに wp_head への手動追加やカスタム実装が推奨されています。
機能の説明
この関数は、投稿の前後関係を示す rel="prev" と rel="next" のメタタグを <head> 内に追加します。
主な用途
- 検索エンジン向けに前後の投稿を明示する
- ページ間のナビゲーションを支援する
- HTML
<head>内に自動で前後リンクを挿入する
この関数は、シングル投稿(single.php)でのみ適用されます。アーカイブページや固定ページでは適用されません。
シンプルなコード例
adjacent_posts_rel_link_wp_head();この関数を wp_head フック内で使用すると、自動的に <head> 内に次のような HTML が追加されます。
<link rel="prev" href="https://example.com/previous-post" />
<link rel="next" href="https://example.com/next-post" />しかし、この関数は現在 非推奨(deprecated) になっているため、代わりに手動で実装するのが推奨されます。
使い方の説明
基本的な使い方
通常は、テーマの functions.php または header.php に以下のように記述します。
function add_adjacent_posts_links() {
adjacent_posts_rel_link_wp_head();
}
add_action('wp_head', 'add_adjacent_posts_links');現在の推奨される方法(非推奨の関数を使わない)
非推奨の adjacent_posts_rel_link_wp_head() を使わずに、手動で前後の投稿リンクを追加する方法は次のとおりです。
function add_custom_adjacent_posts_rel_links() {
if (is_single()) {
$prev_post = get_previous_post();
$next_post = get_next_post();
if (!empty($prev_post)) {
echo '<link rel="prev" href="' . get_permalink($prev_post->ID) . '" />' . "\n";
}
if (!empty($next_post)) {
echo '<link rel="next" href="' . get_permalink($next_post->ID) . '" />' . "\n";
}
}
}
add_action('wp_head', 'add_custom_adjacent_posts_rel_links');get_previous_post()で前の投稿を取得get_next_post()で次の投稿を取得is_single()でシングル投稿ページのみ適用
一緒に使うことが多い関連タグ
get_previous_post()
前の投稿情報を取得する。
$prev_post = get_previous_post();
if ($prev_post) {
echo '<a href="' . get_permalink($prev_post->ID) . '">前の記事へ</a>';
}get_next_post()
次の投稿情報を取得する。
$next_post = get_next_post();
if ($next_post) {
echo '<a href="' . get_permalink($next_post->ID) . '">次の記事へ</a>';
}wp_head
WordPress の <head> にカスタム要素を追加する。
add_action('wp_head', 'custom_function');追加情報で取得したい場合
前後の記事のタイトルを取得する
以下のコードを使うと、前後の記事のタイトルとリンクを表示できます。
$prev_post = get_previous_post();
$next_post = get_next_post();
if ($prev_post) {
echo '<a href="' . get_permalink($prev_post->ID) . '">« ' . get_the_title($prev_post->ID) . '</a>';
}
if ($next_post) {
echo '<a href="' . get_permalink($next_post->ID) . '">' . get_the_title($next_post->ID) . ' »</a>';
}出力例
<a href="https://example.com/previous-post">« 前の記事タイトル</a>
<a href="https://example.com/next-post">次の記事タイトル »</a>想定されるトラブル
adjacent_posts_rel_link_wp_head() を使用しても何も表示されない
解決方法
- この関数は 非推奨 になったため、
get_previous_post()やget_next_post()を使った手動実装に切り替える。 wp_headアクション内に関数を追加しているか確認する。
カスタム投稿タイプで機能しない
解決方法
get_previous_post() や get_next_post() の in_same_term を true にすることで、カスタム投稿タイプでも動作可能。
$prev_post = get_previous_post(true);
$next_post = get_next_post(true);Q&A
まとめ
adjacent_posts_rel_link_wp_head() は、WordPress の <head> 内に前後の投稿への rel="prev" および rel="next" のリンクを追加する関数ですが、現在は 非推奨 になっています。
そのため、代わりに get_previous_post() と get_next_post() を用いた手動実装が推奨されます。SEO 効果を高めるためにも、適切な方法で前後の投稿リンクを管理することが重要です。
コメント