複数のワードプレスサイトのセルフピンバックを回避

2018年3月3日 2018年4月2日 0件のコメント ワードプレス , , , ,

ワードプレスにはピンバックという機能があって、それはワードプレスで作られたサイトでリンクを貼られたら参照したサイト管理者にコメントとメールで連絡がいくような仕組みがあります。

WordPressのピンバックの設定方法

コメントによるお知らせ

メールでは「モデレートして下さい。」という件名で以下のようなお知らせが来ます。

頻繁にピンバックされるサイトだとコメント欄が大変なことになるので設定で無効にしている方もいるかも知れませんが、リンクを貼られるということは管理者としては嬉しい知らせなので無効にせずに運営しています。

話がちょっと逸れますが筆者が運営するサイトの構造はもともとはすべて静的なHTMLで作成したものだったんですが、現在はEDIUSサイト、ブログ(当サイト)、Hitfilmサイトをワードプレス化した動的なサイトでトップページやレビューページなどは静的なサイトのままです。

そのような感じなので複数のワードプレスサイトを運営している自サイト間でもこのピンバック(セルフピンバック)が行われてしまいます。そのたびにメールが来ますし、コメント一覧にも表示されて邪魔くさいので何とかならないか調べたらありました。

 

セルフピンバックの回避方法

セルフピンバックを回避するやり方は色々あるみたいですがfunctions.phpを編集する方法でやってみました。

  • ピンバック送信を設定で停止する
  • プラグインを導入する
  • リンクを相対パスで指定する
  • functions.phpを編集する

functions.phpに以下のコードを記載すればいいみたいでなのでやってみようとしたんですが、複数のWPサイトのどちらに記載すればいいのか分からなくなりました。コードの意味を調べると、意味的にはリンク先のアドレスがWordPressのホームURLと前方一致したらピンバックを送らない、ということなのでリンクを貼る方のWPサイトのfunctions.phpを修正するのが正しいようです(たぶん…)。

参考サイト:WordPressでセルフピンバックを無効にする4つの方法

//セルフピンバック禁止
function no_self_pingst( &$links ) {
  $home = get_option( 'home' );
  foreach ( $links as $l => $link )
  if ( 0 === strpos( $link, $home ) )
    unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_pingst' );

ただできませんでした。「get_option( ‘home’ )」のところを「home_url()」と記載されたサイトがあったのでそのように変更したりして何度かやってみたんですがそのたびにメールとコメントが届きました。よくよく調べたらこのコードはWordPressシステムが1つしかなく、そのシステム自身からのピンバックのみを無効するためのもので筆者のように複数のワードプレスを運営してるものには対応してないみたいです。

再度調べた参考サイトをもとにコードの一部を独自ドメインに変更したら、メールもコメントも来ずにうまくセルフピンバックを止めることができました。

参考サイト:[WordPress] セルフピンバックをドメインごと無効にする方法。複数ブログ運用者向け

// セルフピンバック禁止(複数WPサイト対応版)
function no_self_pingst( &$links ) {
 $home = 'https://edit-anything.com/';
 foreach ( $links as $l => $link )
 if ( 0 === strpos( $link, $home ) )
 unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_pingst' );

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です