「過去記事と効率よくリンクさせたい。」
「リンク漏れを防ぎたいが、作業はなるべくスムーズにしたい。」
「サイト内を検索して関連記事を探すのが手間。」
WordPressでブログやメディアを運営していると、こうした悩みに直面することはありませんか?
そこで今回は、投稿編集画面に内部リンク候補を自動表示するカスタマイズをご紹介します。記事執筆中のリンク漏れを防ぎ、関連記事もリライトしやすくなります。
目次
内部リンク候補を自動表示するカスタマイズ
functions.phpを編集しますので、プラグイン「Code Snippets」を使うのが便利で安心です。コピペで使えるコードを以下に掲載しています。

WordPressの「functions.php」ファイルは、初心者はあまり触らない方が無難です。 色んなカスタマイズが可能な反面、操作を間違えるとエラーが出てしまうリスクがあるからです。 そこで本稿でご紹介するのは「Code Snippets」というプラグイン。functions.ph...
カスタマイズの仕様・できること
このカスタマイズでできることは、以下のとおりです。
- 投稿編集画面に「リンク候補を表示」ボタンが追加される
- ボタンを押すと、タイトル・カテゴリー・タグをもとに候補記事が5件まで表示される
- 候補記事は公開済みだけでなく下書きや予約投稿も含む
実際の表示は、次のようなイメージです。

リンク候補を表示した例
上記のように「リンク候補を表示」ボタンを押すと、関連記事が候補としてリストアップされます。
記事タイトルをクリックすると公開画面が別タブで開き、「編集画面」をクリックするとその記事の編集画面が別タブで開く仕様です。関連記事のリライトや確認がスムーズに行えるようになります。

新しい記事の投稿後にやるべき重要なことの一つ。 それは関連過去記事も同時に編集すること。 新しい記事を投稿したら、それに関連する内容の過去記事をアップデートするのです。それによって過去記事も含めてコンテンツの価値が上がり、集客にも繋がります。 関連過去記事を編集する理由 新しい記...
コピペで使えるコードサンプル
下記コードを「Code Snippets」の編集画面にコピペして追加するだけでOKです。
// リンク候補(投稿編集画面に表示)
add_action('edit_form_after_title', function($post){
if($post->post_type !== 'post') return;
echo '<div id="related-link-candidates" style="margin:10px 0;">';
echo '<button type="button" id="show-candidates" class="button">リンク候補を表示</button>';
echo '<div id="candidate-list" style="margin-top:10px;"></div>';
echo '</div>';
$data = [
'post_id' => $post->ID,
'title' => trim($post->post_title),
'tags' => wp_get_post_tags($post->ID, ['fields'=>'ids']),
'cats' => wp_get_post_categories($post->ID),
'ajax_url'=> admin_url('admin-ajax.php')
];
echo '<script>var relatedData='.json_encode($data).';</script>';
});
// Ajax処理:候補取得(上位5件固定)
add_action('wp_ajax_get_related_candidates', function(){
$post_id = intval($_POST['post_id']);
$title = trim($_POST['title']);
$tags = $_POST['tags'] ?? [];
$cats = $_POST['cats'] ?? [];
$posts = get_posts([
'post_type'=>'post',
'post_status'=>['publish','draft','future'],
'post__not_in'=>[$post_id],
'posts_per_page'=>-1,
]);
$candidates = [];
foreach($posts as $p){
$score = 0;
if($title && stripos($p->post_title, $title)!==false) $score+=3;
if($tags) $score+=count(array_intersect($tags, wp_get_post_tags($p->ID,['fields'=>'ids'])))*2;
if($cats) $score+=count(array_intersect($cats, wp_get_post_categories($p->ID)));
if($score>0) $candidates[$p->ID]=$score;
}
if($candidates){
arsort($candidates);
$candidates=array_slice($candidates,0,5,true);
foreach(array_keys($candidates) as $pid){
$p = get_post($pid);
$status = $p->post_status;
$title_text = esc_html($p->post_title);
// 公開済みならフロント、下書き/予約なら編集画面
if($status === 'publish'){
$front = get_permalink($p->ID);
} else {
$front = get_edit_post_link($p->ID,'');
}
// ステータス表示
$label = '';
if($status === 'draft') $label = '(下書き)';
if($status === 'future') $label = '(予約投稿)';
echo '<div style="margin-bottom:6px;">';
echo '・<a href="'.esc_url($front).'" target="_blank">'.$title_text.'</a> '.$label.' - <a href="'.esc_url(get_edit_post_link($p->ID,'')).'" target="_blank">編集画面</a>';
echo '</div>';
}
} else {
echo '<p>リンク候補の記事はありません。</p>';
}
wp_die();
});
// 管理画面用最小JS
add_action('admin_footer', function(){
?>
<script>
jQuery(function($){
$('#show-candidates').on('click', function(){
$.post(relatedData.ajax_url,{
action:'get_related_candidates',
post_id:relatedData.post_id,
title:relatedData.title,
tags:relatedData.tags,
cats:relatedData.cats
}, function(response){
$('#candidate-list').html(response);
});
});
});
</script>
<?php
});
注意点・補足
カスタマイズ導入時の注意点や補足をまとめているので、参考にご覧ください。
権限による表示の違い
下書きや予約投稿の候補は、ユーザーの権限によって表示されないようになっています。
たとえば、投稿の編集権限を持たないユーザーは一部の非公開記事を閲覧できません。
通常どおり、WordPressのユーザー権限別で操作制限があるということです。管理者や編集者など、適切な権限を持つアカウントで確認しましょう。

WordPressでは、運営を行うユーザーごとにアカウントを発行できます。 担当者が数名いるコーポレートサイトやメディアサイトでは、1アカウントを共有するのではなく、ユーザーごとにアカウントを作り、適切な権限を設定する必要があります。全ての担当者が、全ての設定を変更できる状態にしておくのは、セ...
パフォーマンスへの影響
候補リストは、ボタンを押したときにのみ取得される仕様のため、通常の編集画面の読み込み速度には影響しません。必要なときだけ動作する設計なので安心です。
候補の精度について
5件の候補は、タイトル・タグ・カテゴリをもとにスコア化して抽出される仕組みです。
具体的には以下のとおりです。
- タイトルが部分一致:3点
- タグが一致:2点
- カテゴリーが一致:1点
これらの合計スコアが高い順に、上位5件の記事を表示しています。
仕組み上、関連性が100%正確とは限らないため、最終的なリンク先は実際の内容を確認して判断するのがおすすめです。
まとめ
投稿編集画面に内部リンク候補を自動表示する方法をご紹介しました。
記事執筆中の内部リンクの効率化や、関連記事のリライトにすぐに役立つカスタマイズです。「Code Snippets」プラグインを使えば、コピペだけでかんたんに実装できます。
WordPressブログやメディアの内部リンクは、ユーザー体験の向上やSEO効果に直結します。日常的に記事を更新しているなら、ぜひこの方法を試してみてください。
ブログ運営に関する記事

記事のリライトは、ブログのアクセスを増やすために欠かせない手法です。検索エンジンからアクセスを集めるには、リライトを前提としたブログ運営が必要です。 リライトによって、検索順位がアップしたりアクセス数が増加することもありますが、減少することもあります(下のグラフは増加した例)。 リラ...

新しい記事の投稿後にやるべき重要なことの一つ。 それは関連過去記事も同時に編集すること。 新しい記事を投稿したら、それに関連する内容の過去記事をアップデートするのです。それによって過去記事も含めてコンテンツの価値が上がり、集客にも繋がります。 関連過去記事を編集する理由 新しい記...

ブログのカテゴリーは、記事の数が増えてくるとたいてい見直しが必要になるものです。カテゴリーを整理しないまま記事の数だけ増えていくと、求めている記事が探しにくくなり、ユーザービリティを下げることになります。 どこに何のコンテンツがあるのか、ユーザーが想像しやすいように整理しておくことが重要です。...
WordPressテーマ集
コメント