私は自分のサイトをメンテナンスモードにするための非常に簡単なトグルを作りたい。これを行うには、メンテナンスページであるテンプレートを定義する管理領域を追加し、メンテナンスモードがオンになっているときにそのページでデータベース定義のテンプレートを上書きできるようにします。
データベースに影響を与えずに、ページごとに呼び出されるテーマテンプレートを変更する方法を教えてください。
オプションデータベースの簡単なオプションを使用して、メンテナンスモードのテンプレートファイルをphpするためにtemplate_redirect
アクションフックを使用できます。
メンテナンスモードをオンにするときに、たとえばオプションを追加します。
add_option('maintenance_mode_on');
それからこのコードであなたはそのオプションが設定されているかどうかをチェックし、そうであればあなたが望むテンプレートファイルにリダイレクトする:
function custom_maintenance_mode_template_redirect() {
global $wp;
if(get_option('maintenance_mode_on')){
status_header(200); // a 404 code will not be returned in the HTTP headers if the page does not exists
include(TEMPLATEPATH . "/Custom_template.php"); // include the corresponding template
die();
}
}
add_action( 'template_redirect', 'custom_maintenance_mode_template_redirect' );
メンテナンスモードをオフにしたら、そのオプションを削除します。
delete_option('maintenance_mode_on');
body_class()
を有効にしたい場合は、body_class
フィルタフックを使用できます。
function custom_body_class($classes){
if(get_option('maintenance_mode_on')){
$n_classes[] = "maintenance";
return $n_classes;
} else {
return $classes;
}
}
add_filter('body_class', 'custom_body_class');
これはメンテナンスモードがオンになっているときbody_class()がmaintenance
を出力するように変更します。