WordPress : Comment activer/désactiver un crochet avec des options de thème
J’essaie d’utiliser cette fonction pour ajouter une fonctionnalité de mode de maintenance en l’ajoutant dans le fichier functions.php de mon thème et j’essaie d’utiliser les options de mon thème pour l’activer/le désactiver.
J’ai réalisé que lorsque je cochais/décochais ceci via la page d’options du thème, cela ne fonctionnait pas. Je suppose qu’une fois l’action ajoutée, elle ne peut pas être désactivée. J’ai essayé d’ajouter une condition elseif avec remove_action pour le même crochet, mais cela n’a pas fonctionné non plus.
function mytheme_under_construction(){
// if user is logged in, don't show the construction page
if ( is_user_logged_in() ) {
return;
}
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
$protocol = 'HTTP/1.0';
// 503 is recommended : http://bit.ly/YdGkXl
header( "$protocol 503 Service Unavailable", true, 503 );
// or header( "$protocol 200 Ok", true, 200 );
header( 'Content-Type: text/html; charset=utf-8' );
// adjust the Retry-After value (in seconds)
header( 'Retry-After: 3600' );
?>
<?php get_template_part('maintanance'); ?>
<?php
die();
}
global $mytheme;
if(!empty($mytheme['offline_id'])){
add_action( 'template_redirect', 'amytheme_under_construction' );
}
La seule façon dont cela fonctionne est lorsque j’ajoute/supprime directement le ! à partir de cette ligne :
if(!empty($mytheme['offline_id'])){
Quelqu’un peut-il m’aider avec le problème?
Merci
Solution n°1 trouvée
En fait, tout ce que j’avais à faire est d’exécuter les options de thème dans la fonction, comme ceci :
function mytheme_under_construction(){
global $mytheme;
if(!empty($mytheme['offline_id'])){
// if user is logged in, don't show the construction page
if ( is_user_logged_in() ) {
return;
}
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
$protocol = 'HTTP/1.0';
// 503 is recommended : http://bit.ly/YdGkXl
header( "$protocol 503 Service Unavailable", true, 503 );
// or header( "$protocol 200 Ok", true, 200 );
header( 'Content-Type: text/html; charset=utf-8' );
// adjust the Retry-After value (in seconds)
header( 'Retry-After: 3600' );
?>
<?php get_template_part('maintanance'); ?>
<?php
die();
}
}
add_action( 'template_redirect', 'amytheme_under_construction' );
0 commentaire