WordPressで記事内に、過去の記事へのリンクを貼り付けた場合にコメント通知が届きます。メールが届いたりして喜んで、確認すると自分だったという経験があります。(笑)このセルフピンバックが届かないようにする方法を紹介します。
プラグインを使う
セルフピンバック(self pingback)で検索すると、専用や機能があるプラグインがあります。今回はプラグインを使わない方法を紹介したいと思うので、説明は割愛します。phpコードやWordPressの設定画面を変更したくない場合にはプラグインを使うことをおススメします。
URLを相対パスにする
設定を使わずに、URLを貼り付ける場合の文字列を変更することでピンバックが届かなくなります。
例えば、下のようなURLのリンクを設定したい場合
https://blog.janjan.net/wp-selfpingback-cancel
全部使うのではなく[/wp-selfpingback-cancel]の部分だけをリンクに設定します。
URL全部を絶対パスと呼ぶのに対して、[/wp-selfpingback-cancel]は相対パスと呼ばれています。先頭のドメイン(blog.janjan.net)部分は決まっているので省略して場所の情報を示す方法です。
このリンク作成方法だと、コメント通知が届かなくなります。アナログ的な方法ですが設定変更などの必要もなく簡単です。
デメリットとしては、毎回相対パスの部分を切り取る手間が増えるということになります。手間と捉えるかは個人差があります。(笑)
PHPを変更する
管理画面の[外観|テーマ編集]メニューから、WordPressで利用しているfunction.phpの内容を編集してセルフピンバックをキャンセルします。
//セルフピンバックをキャンセルする add_action( 'pre_ping', 'noselfback_ping' ); function noselfback_ping( &$links ) { $home = get_option( 'home' ); foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]); }
コードにするとこんな感じになると思います。PHPの場合
add_action(‘a’, ‘***’); function ***(params) {} で1つのブロックになっているので、他のadd_actionから始まるブロックの後(または間)に追加します。
add_action( 'hoge', 'hogehoge'); function hogehoge() { } //セルフピンバックをキャンセルする add_action( 'pre_ping', 'noselfback_ping' ); function noselfback_ping( &$links ) { $home = get_option( 'home' ); foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]); }
こんな感じの場所に追加します。後は、実際に記事にURLを追加してピンバックを作って、公開します。モデレート通知が届かなければ変更完了です。
スポンサーリンク
最後までご覧いただき、ありがとうございます。