Je souhaite créer une bascule très simple pour faire passer mon site en mode de maintenance. Pour ce faire, je souhaite ajouter une zone d'administration afin de définir un modèle de page de maintenance et permettre à cette page de remplacer le modèle défini par la base de données lorsque le mode de maintenance est activé.
Comment puis-je changer le modèle de thème appelé pour chaque page, SANS affecter la base de données?
vous pouvez utiliser template_redirect
action hook pour inclure php votre fichier de modèle en mode maintenance en utilisant une simple option dans la base de données des options.
Lorsque vous activez le mode maintenance, ajoutez une option par exemple:
add_option('maintenance_mode_on');
ensuite, avec ce code, vous vérifiez si cette option est définie et si vous redirigez le fichier vers le fichier de modèle souhaité:
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' );
Puis, lorsque vous désactivez le mode maintenance, supprimez cette option:
delete_option('maintenance_mode_on');
Si vous voulez affecter la body_class()
, vous pouvez utiliser le hook de filtre 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');
Cela modifiera body_class () en sortie maintenance
lorsque le mode de maintenance est activé.