WP Manifestindependent plugin directory
manifest / utilities / link-miss-checker

リンクミス発見ツール

記事更新前にリンク切れ・末尾欠け・パラメータ重複・旧スラッグ・商品名不一致を自動チェックし、問題があれば更新を止めます。週1回の全記事巡回とチャット通知も行います。

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/terasakisd/link-miss-checker/archive/refs/heads/main.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

記事更新前にリンクのミスを自動チェックし、問題があれば更新を止めるWordPressプラグイン。週1回の全記事巡回とチャット通知機能つき。

解消できること

  • リンクの末尾が欠ける(コピペミス)
  • パラメータの重複、古いスラッグのまま
  • 差し替え後にリンクが飛ばない

動作の流れ

  1. 記事の「更新」ボタンを押す
  2. ツールが記事内のリンクを全部抜き出す
  3. 1つずつ自動でアクセスして確認
    • ちゃんと飛ぶか(HTTPステータス・リダイレクト追跡)
    • 末尾が欠けていないか(- = % 等での終端、不完全な%エンコード)
    • パラメータが重複していないか
    • 内部リンクが今のスラッグと一致しているか(旧スラッグ検出)
    • JSリンク(<div id="bt414"> 等、JSで遷移する要素)の遷移先URLも同様にチェック
  4. 問題があれば一覧モーダルで表示して、更新を止める
  5. 人が直して、もう一度チェック(「このまま更新する」で強制更新も可能)
  6. 問題なければそのまま更新

さらに週1回(月曜 午前6時)、全記事の広告リンクを自動巡回し、問題があればチャットに通知します。

インストール

  1. link-miss-checker フォルダを wp-content/plugins/ にアップロード (または ZIP を「プラグイン > 新規追加 > プラグインのアップロード」から)
  2. プラグインを有効化
  3. 「設定 > リンクミス発見」で通知先などを設定

導入チェックリスト(本番サイト)

1. Chatwork通知の接続

  1. APIトークンの発行: Chatwork右上の自分のアイコン →「サービス連携」→「APIトークン」 でトークンを表示・コピー(管理者がAPI利用を許可している必要があります)
  2. ルームIDの確認: 通知先のグループチャットを開き、URLの #!rid の後ろの数字 (例: https://www.chatwork.com/#!rid12345678 → 12345678)
  3. 「設定 > リンクミス発見」で通知先サービスを「Chatwork」にし、 APIトークンとルームIDを入力して保存
  4. 「ツール > リンク巡回結果」の「テスト通知を送信」ボタンを押し、ルームに届くか確認
    • 失敗した場合は画面に失敗理由が表示されます(HTTP 401ならトークン誤り、 HTTP 403/404ならルームIDの誤りか未参加のルームです)

通知は [info][title]リンクミス発見ツール[/title]...[/info] 記法で囲んで送信されるため、 Chatwork上で枠付きの見やすいメッセージになります。

2. サーバーcronの設定

WP-Cronはサイトへのアクセスを契機に動くため、アクセスの少ないサイトでは 週次巡回が遅れます。サーバーのcronに以下を登録すると確実です (「ツール > リンク巡回結果」の上部に、サイトのURL入りでコピーできる形で表示されます):

*/15 * * * * curl -s "https://あなたのサイト/wp-cron.php?doing_wp_cron" >/dev/null 2>&1

さらに wp-config.php に define( 'DISABLE_WP_CRON', true ); を追加すると、 アクセス契機の実行を止めてサーバーcronだけで動かせます(任意)。

3. 自動巡回の監視

「ツール > リンク巡回結果」上部のパネルで以下を常時確認できます:

  • 次回の自動巡回の日時
  • DISABLE_WP_CRON が有効なのにサーバーcron未設定の疑いがある場合の警告
  • 前回の巡回から8日以上経過している場合の警告

また、週次イベントが何らかの理由で消えた場合や、巡回が途中で止まった場合は、 管理画面を開いたタイミングで自動的に再登録・再開されます(自己修復)。

設定項目

項目 説明
更新ブロック エラー時に記事更新を止めるか
巡回対象リンク 広告リンクのみ / すべての外部リンク
広告リンクのパターン 初期値はそのサイトのドメイン。1行1パターンで、ドメイン(example.com)または「/」を含むURL部分一致(/code/)を指定できる
Chatwork通知 週次巡回の結果を通知(APIトークン+ルームID)

画面

  • ツール > リンク巡回結果 — 週次スキャンの結果一覧。「今すぐ全記事をスキャン」「テスト通知を送信」ボタンあり
  • 設定 > リンクミス発見 — 各種設定

チェック項目の詳細

コード 重大度 内容
invalid_url エラー URLの形式が不正(スキーム・ホスト欠け)
broken_markup エラー hrefに \" (エスケープされた引用符)が混入している(一括置換ツールの変換ミス等。クリックしても開けない状態)
truncated エラー 末尾欠けの疑い(- = % ? & . , _ 終端、不完全な%エンコード)
dup_param エラー クエリパラメータの重複
old_slug エラー 旧スラッグへの内部リンク(現在のURLを提示)
internal_not_public エラー リンク先の記事が非公開
http_error エラー アクセス不可、または HTTP 400 以上(401/403/429はbot対策とみなし報告しない。クッション/リダイレクトで外部ドメインへ移動した末の4xxも、広告主のbot対策とみなし報告しない)
redirect_to_top 警告 トップページへリダイレクト(商品ページ削除の典型パターン)
ssl_expired エラー リンク先のSSL証明書が期限切れ(ブラウザでブロックされる)。チェック元サーバーのルート証明書が古いだけの検証失敗は、応答があれば報告しない
js_unresolved エラー JSリンクの遷移先URLがどこにも見つからない(リンクが飛ばない状態)

JSリンクへの対応

<div id="bt414">詳細</div> のように、idを設定してJSで遷移させている要素にも対応しています。

遷移先URLの探索場所(上から順に優先):

  1. 記事本文内の `