WordPress : Comment activer/désactiver un crochet avec des options de thème

Publié par Jean-Michel le

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' );

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *