概要
nocache_headers
フィルタは、キャッシュを無効にするHTTPヘッダーを出力するために使用されます。このフィルタを使用すると、特定のレスポンスに対してブラウザやプロキシサーバーがキャッシュしないように設定できます。一般的に、以下のような機能を実装する際に利用されます。
- 動的なコンテンツの表示
- ユーザー固有のデータの提供
- 管理画面のセキュリティ向上
- APIエンドポイントの設定
- フォームデータの更新時
- ユーザーの認証処理
- 商品の在庫確認ページ
- リアルタイムの情報提供
構文
apply_filters( 'nocache_headers', $headers );
パラメータ
$headers
: 変更可能なHTTPヘッダーを含む配列。
戻り値
- 修正されたHTTPヘッダーの配列を返します。
関連する関数
https://refwp.com/?titleonly=1&s=nocache_headers
使用可能なバージョン
このフィルタはWordPress 2.0.0以降で使用可能です。
ワードプレスのコアファイルのパス
wp-includes/default-filters.php
この関数のアクションでの使用可能性
アクション | 使用可否 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | 〇 |
send_headers | 〇 |
parse_query | |
pre_get_posts | |
wp | 〇 |
template_redirect | 〇 |
get_header | |
wp_head | 〇 |
サンプルコード
サンプルコード 1: デフォルトのキャッシュを無効化する
add_filter('nocache_headers', function($headers) {
$headers['Cache-Control'] = 'no-cache, no-store, must-revalidate';
$headers['Pragma'] = 'no-cache';
return $headers;
});
このコードは、全てのページに対してキャッシュを無効にするHTTPヘッダーを設定します。
サンプルコード 2: 特定の条件下でキャッシュを無効化する
add_filter('nocache_headers', function($headers) {
if (is_user_logged_in()) {
$headers['Cache-Control'] = 'no-cache, no-store, must-revalidate';
}
return $headers;
});
このコードは、ユーザーがログインしている場合のみキャッシュを無効化します。
サンプルコード 3: JSON APIのレスポンスでキャッシュを制御する
add_filter('nocache_headers', function($headers) {
if (defined('REST_REQUEST') && REST_REQUEST) {
$headers['Cache-Control'] = 'no-cache, no-store, must-revalidate';
}
return $headers;
});
このコードは、WordPress REST APIリクエストに対してキャッシュを無効にします。
サンプルコード 4: ウェブサイトのメンテナンスページでキャッシュを無効化する
add_filter('nocache_headers', function($headers) {
if (get_option('maintenance_mode')) {
$headers['Cache-Control'] = 'no-store';
}
return $headers;
});
このコードは、サイトがメンテナンスモードにある場合にキャッシュを無効にします。
サンプルコード 5: サイトのフロントエンドでキャッシュを無効化する
add_filter('nocache_headers', function($headers) {
if (is_front_page()) {
$headers['Cache-Control'] = 'max-age=0, no-cache, no-store, must-revalidate';
}
return $headers;
});
このコードは、フロントページが表示される際にキャッシュを無効化します。