PR

WordPressでブログ内の内部リンクをチェックする方法(ソースコード、プラグイン無料公開)

ブログ運営

今回の記事では、管理しているブログで、記事間の内部リンクをチェックする方法を紹介します。実際に無料で公開しているソースコードをfunctions.phpに、コピペするだけです。

PHPを触りたくないという方のために、プラグインも作成しましたので、良かったら使ってみて下さい。

ブログの記事が、増えてくると内部リンクが貼り損ねたりする場合があります。また1記事に対して5~6記事から内部リンクが理想ですが、気づいたら1記事からリンクされているだけということは良くあります。

  • 記事の内容は、Wordpressで内部リンクをチェックする方法です。
  • ブログを運営されている方で、内部リンクをチェックしたい方に向けた記事です。

内部リンクの効果

内部リンクの効果を2点だけ、簡単に説明します。

クローラーが見つけやすくなる

グーグルのクロールは、サイトマップを基にブログ内を巡回します。サイトマップという地図を見ながら、「Aの記事からBの記事へ移動できるのですね~、ということはAとBの記事は関連しているのですね~」といった感じで、グルグル巡回します。ここで記事から記事への内部リンクが貼れていないと、クローラは記事を見つけられないので、インデックス登録ができないことが多いのです。

サイトマップを見ているので、記事の存在は把握していても、内部リンクでたどり着かないので、インデックス登録に時間がかかってしまいます。場合によっては、見つからずインデックス登録されず、そのまま放置になってしまうこともあります。

グーグルのクローラーは、全てのページを巡回してくれません。作ったばかりのブログでは、クロールする回数が少なく割り当てられているため、10記事くらいしか見てくれないケースもあります。そのため、内部リンクを貼っておくと無駄な巡回を回避し、クロールしやすくなります。

ブログに来た人に、関連記事を教えることで、エンゲージメント改善

内部リンクがあると、記事を読み終えてもブログから離脱されにくくなる効果があります。ブログの記事が低品質であると、「次も読んでみよう!」となりませんが、普通の場合だと関連する記事を読みたくなるものです。

内部リンクがしっかり貼れていれば、リンク不良での離脱を防げます。例えば「成田空港から海外へ旅行した旅行記」の記事があったとし、「成田空港でのおすすめのお土産15選」という記事があれば、気になって見てしまいますよね?人の心理を読みながら、関連記事をうまく内部リンクします。

全く関連性の無い記事を内部リンクしても効果が無いので、注意してください。例えば「旅行記」の記事に、「段ボールで本棚を作ってみた」という記事をリンクしても読まれる確率はとても低いです。

1つの記事に対して、より多くの記事から内部リンクを貼ることでSEO対策としてはかなりの効果が期待されます。100記事あれば、1記事あたり5記事から内部リンクを受けるとし、500個の内部リンクが理想です。

方法1:ソースコードを入力し確認する

プログラミングコードを実装

基本的にコピペでできます。ブログを運営されている方でも、プログラミングには詳しくない方のために、わかりやすく説明しています。

ステップ1:ソースコードをコピーする

function check_blog_links() {
    // Get all published posts
    $args = array(
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => -1
    );
    $posts = get_posts($args);

    $results = array();

    foreach ($posts as $post) {
        $results[$post->ID] = array(
            'title' => $post->post_title,
            'url' => get_permalink($post->ID),
            'links' => array()
        );
    }

    foreach ($posts as $post) {
        // Get the content of the post
        $content = $post->post_content;

        foreach ($results as $id => $data) {
            if ($post->ID == $id) {
                continue;
            }

            // Check if the content includes the exact URL of another post using regex
            $pattern = preg_quote($data['url'], '/');
            if (preg_match('/\b' . $pattern . '\b/', $content)) {
                $results[$id]['links'][] = '<a href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a>';
            }
        }
    }

    // Format the results for output
    $output = '<ul>';
    foreach ($results as $data) {
        $output .= '<li><a href="' . $data['url'] . '">' . $data['title'] . '</a><ul>';
        if (empty($data['links'])) {
            $output .= '<li>被リンク無し</li>';
        } else {
            foreach ($data['links'] as $link) {
                $output .= '<li>' . $link . '</li>';
            }
        }
        $output .= '</ul></li>';
    }
    $output .= '</ul>';

    return $output;
}
add_shortcode('check_blog_links', 'check_blog_links');

コードの説明です(わらかない方は、読まなくても問題無いです)。

  • get_posts 関数を使用して、すべての公開された投稿を取得しています。
  • post_typepost に設定されており、通常の投稿を対象としています。
  • post_statuspublish で、公開された投稿のみを対象としています。
  • 各投稿の内容を取得し、他の投稿へのリンクを検索します。
  • preg_quote を使用して、URLを正規表現用にエスケープしています。
  • preg_match を使用して、投稿内容に他の投稿のURLが含まれているかどうかをチェックします。
  • リンクが見つかった場合、該当する投稿のリンク情報に追加します。
  • リンク関係をツリー形式のリストとしてフォーマットします。
  • 各投稿に対して、リンクが存在しない場合は「被リンク無し」を表示します。
  • 存在する場合は、リンクされた投稿をリストとして表示します。
  • add_shortcode 関数を使用して、ショートコード を登録しています。

非公開記事からのリンクはチェックしていません。記事数が多いと膨大な数になるためです。PHPがわかる方は、修正して使ってみて下さい。

ステップ2:コードを貼り付ける

WordPress管理画面より、外観⇒テーマファイルエディタ⇒テーマのための関数 (functions.php)を開いたら、コピーしたソースコードをそのままコピーします。

Wordpressで内部リンクチェックのソースコードを設定
WordPressで内部リンクチェックのソースコードを設定

注意:コピペに失敗してしまうと管理画面が操作できなくなる場合がありますので、ご注意ください。もし、管理画面が操作不能になってしまったら、下記の記事を参考にしてください。

ステップ3:固定ページにショートコードを貼り付ける

次に、新規に固定ページ(記事ページでも可能)を作り、ショートコードを貼り付けます。

[check_blog_links]

ショートコードはそのままコピペします。ショートコードは作ったプログラムを呼び出すコマンドです。

ショートコードの貼り付け方法
ショートコードの貼り付け方法

保存して、固定ページをプレビューすると、リンクの一覧が表示されます。チェック用の固定ページは、下書き保存か、非公開設定にしておいてください。

内部リンクをチェックする

パターン1:内部リンクが少ないもしくは、内部リンクが貼れていない

Wordpressブログの内部リンクチェック(内部リンクが少ないパターン)
WordPressブログの内部リンクチェック(内部リンクが少ないパターン)

パターン2:内部リンクがしっかり貼れているパターン

Wordpressブログの内部リンクチェック(内部リンクがOKパターン)
WordPressブログの内部リンクチェック(内部リンクがOKパターン)
著者
著者

著者は、ブログを時々チェックしますが、結構内部リンクが貼れていないことが多いです。

補足(リンク切れチェックはしません)

当ブログでは、存在しない記事へのリンク切れチェックに関する方法は、割愛させて頂きます。他の方が既に書いている方法を載せても、意味がありませんので、今回の記事は内部リンクの数をチェックするというポイントをテーマにご紹介させて頂きました。

リンク切れチェックをしたい方は、いろんなプラグインがありますので、そちらをご利用してみてください。

方法2:プラグインにて確認する

「方法1」のように、function.phpを編集するのが怖いという方のために、プラグインをインストールし、確認する方法も準備いたしました。

プラグインは、当ブログで作成したものです。無断での配布は禁止です。プラグインのダウンロードは以下のようになります。

方法1と同じショートコードが使えないので、プラグインにて確認する場合は、ショートコードが異なります。

[myplugin_check_blog_links]

非公開のデバック用の固定ページを作り、実際に確認してみてください。

さいごに

今回の記事のまとめです。以下のような流れになります。

  • 内部リンク用のコードをコピーする。
  • functions.phpに貼り付ける。
  • ショートコードを固定ページに貼り付け、プレビューする。
  • 内部リンクをチェックする。

念のため、動作確認はしておりますが(実際に自分も使っている)、何か不具合や不都合があれば、コメントもしくは問い合わせフォームにてお知らせください。

著者より

記事が参考になりましたら、ぜひブックマークをお願いします。ご意見・ご感想はお気軽に問い合わせフォームよりお寄せください。いつもメッセージを頂き、ありがとうございます。

執筆者のプロフ

スポンサーリンク
スポンサーリンク
ブログ運営

コメント歓迎

当ブログでは、2024年7月よりコメントを許可しております。記事に対する疑問やご意見があればお気軽に書き込みください。

コメント

  1. PHPを触るのが怖いので、プラグインとして配布はできないのでしょうか?

    • 匿名さん
      ソースコードを公開していますので、ご自身がプラグイン化することも可能ですが、こちらでファイルを圧縮したのを準備しましたので、ダウンロードしてご自身のブログにプラグインを登録してみてください。

  2. 50代のブログ初心者で、wordpressを使ってブログを立ち上げる予定です。両毛さんのブログはとても分かりやすく勉強になります。

    • 的ちゃんぺさん
      コメントは励みになります、ありがとうございます。これからWordpressでブログ立ち上げ予定なのですね!頑張ってください!