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 効果を高めるためにも、適切な方法で前後の投稿リンクを管理することが重要です。
コメント