【PHP・WordPress】HTTPヘッダの削除・追加に便利なheader_register_callback()関数
2024年9月17日
WordPress に限らず、PHP で HTTP ヘッダを整形・編集できる関数「header_register_callback
」について触れておきます。
例えば WordPress で HTTP ヘッダを編集する場合、wp_headers
フィルターフックを使って以下のようなコードを書くことがありますが、
add_filter('wp_headers', 'filter_http_headers', 999);
function filter_http_headers($headers) {
// Remove -> X-Pingback
unset($headers['X-Pingback']);
return $headers;
}
Code language: PHP (php)
この方法では、一部のプラグインが特定条件下で出力する HTTP ヘッダは削除・編集できません。
そういった場合は、より強力な HTTP ヘッダの操作方法である header_register_callback
関数を使う手があります。
header_register_callback(function (){
// Remove -> X-Pingback
header_remove('X-Pingback');
// Remove -> "Vary:Accept-Encoding,User-Agent,Cookie" by W3TC (Disk Advanced: Cache missed.)
header_remove('Vary');
// Vary ヘッダは常に Accept-Encoding, User-Agent
header('Vary: Accept-Encoding, User-Agent');
});
Code language: JavaScript (javascript)
例えば、WordPress のプラグイン「W3 Total Cache」でユーザーグループ機能や gzip / Brotli 圧縮 ON 時に自動出力される Vary ヘッダは、WordPress の wp_headers
フィルターフックでは削除できないものの、header_register_callback
関数であれば削除できます。
もちろん W3TC 自体は、必要があって Vary ヘッダに Cookie を出力していますから、先のコードを脳死でコピペするのは如何なものかと思いますが。
事情があってお困りの方は参考にしてみてください。
公式情報:
こんな記事も読んでみませんか?
- nginx+W3 Total Cache+gzipでのVaryヘッダー嵌りどころメモ【WordPress・Brotli】
- WordPressへのパスワード総当りやXML-RPC攻撃をfail2banで緩和するプラグイン「WP fail2ban」
- 【WordPress】画像がぼやける件を原因調査した話(不要なイメージサイズの削除とsrcset。medium_largeは特別扱い)
- 【WordPress】HTTP/3環境で「Undefined array key "HTTP_HOST"」エラーが出る場合の対応
- SassがBOM付きCSSを吐いて先頭のCSS定義が効かなかった件(BOM付きPHPをincludeしつつBOMを削除する方法)
- WordPressで外部のjQueryなどを参照させる方法と、重複読み込みさせない作法