[WordPress] セルフピンバックをドメインごと無効にする方法。複数ブログ運用者向け
2018/04/07
WordPressのセルフピンバックを、自システムだけでなくドメイン丸ごと無効にする方法です。プラグイン不要です。
目次
ピンバック
記事にリンクを貼ったときに、リンク先に「リンクしましたよ」と知らせる機能です。自動トラックバックみたいなものですね。
セルフピンバック
標準では自分自身(WordPressシステム)に対してもピンバックが送信されるので、記事内にサイト内リンクを貼るたびにピンバックを受け取ってしまいます。
ピンバックは記事にコメントとして掲載されます。サイト内リンクを掲載することにあまり意味があるとは思えません。
セルフピッバックを無効にする方法
自サイトにWordPressシステムを1つしか置いていない場合
WordPressシステムが1つしかなく、そのシステム自身からのピンバックのみを無効にする場合は、以下のコードをfunctions.phpに追加すればOKです。
//セルフピンバック禁止 function no_self_pingst( &$links ) { $home = home_url(); foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]); } add_action( 'pre_ping', 'no_self_pingst' );
この情報は検索すれば簡単に出てくると思います。リンク先URLがWordPressのホームURLと前方一致したらピンバックを送らない、という設定になります。
自サイトにWordPressシステムが複数ある場合
1つのサイト内に複数のWordPressシステムを運用していて、そのすべてからのピンバックを無効にしたい場合です。
先ほどのコードの一部を変更します。
//セルフピンバック禁止 function no_self_pingst( &$links ) { $home = 'https://itjo.jp/'; // 自サイトのURLに変更 foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]); } add_action( 'pre_ping', 'no_self_pingst' );
リンク先URLの比較対象を、ホームURLではなく自サイトのホームURL(ドメイン)に変更します。
直書きじゃなくちゃんと取得する方法もありますが、ドメインなんてそうそう変更するものじゃないのでこれで良しとします。
特定URLへのピンバックも禁止する
自分で運営している他のドメインなど、他のサイトへのピンバックも禁止する方法です。
先ほどの判定をORで複数並べます。
//セルフピンバック禁止 function no_self_pingst( &$links ) { $home = 'https://itjo.jp/'; // 自サイトのURLに変更 foreach ( $links as $l => $link ) if ( 0 === strpos( $link, 'http://aaa.com/' ) || 0 === strpos( $link, 'http://bbb.com/') ) unset($links[$l]); } add_action( 'pre_ping', 'no_self_pingst' );
これで aaa.com と bbb.com へのリンクではピンバックを送信しないようになります。
まとめ
1サイト内に複数ブログを運営していると、色々悩むことがありますね。でも一つのブログに集約するより、複数ブログで問題を逐次解決する方が楽なのでそうしています。
それにしてもセルフピンバックはデフォルトで無効にした方が良いように思うんですが、なぜこうなっているんでしょうね?