WordPressのHTTPヘッダーにあるX-Pingbackを無効化

WordPressが応答するHTTPヘッダーを見てみると、

X-Pingback:https://setting-tool.net/xmlrpc.php

のようなX-Pingbackの応答をしているのがわかる。ピンバックを必要としないのであれば、余計な応答は削除したいところである。

X-Pingbackのヘッダーを無効化するには、テーマのfunctions.phpにおいて、

// remove X-Pingback header
function remove_x_pingback($headers) {
    unset($headers['X-Pingback']);
    return $headers;
}
add_filter('wp_headers', 'remove_x_pingback');

 のような記述を追加しておく。ヘッダー文字列を構築した後のwp_headersフィルタ部分で、一度作成された'X-Pingback'を削除するという処理を行っている。最初から無効化できないかとざっとソース(バージョン3.6)を見てみたが、パラメータ的な制御では調整できない状態だったので、これがベストとなる。

WordPress 4.4以降は別実装

WordPress 4.4にアップグレードしたら、上記の方法では無効化できなくなってしまった。原因は仕様変更。

* @since 4.4.0 `X-Pingback` header is added conditionally after posts have been queried in handle_404().

良さそうな設定どころはないかと、ソースコードを追いかけてみたところ、functions.phpに、

add_filter('pings_open', function(){return 0;});

と設定しておくのが無難という結論に。