web-dev-qa-db-fra.com

Existe-t-il une action telle que 'init_frontend'

J'ai trouvé init et init_admin. Y at-il une action qui s'exécute juste dans le frontend? Merci.

3
thom

Vous pouvez combiner add_action() et une vérification is_admin():

! is_admin() and add_action( 'init', 'my_custom_callback' );

Maintenant, la fonction de rappel fonctionnera uniquement sur le front-end.

5
fuxia

'template_redirect' est le plus utile.

2
scribu

En retard à la fête, mais a trouvé les autres réponses pas aussi claires.

Il n'y a pas de crochet de type init- qui soit uniquement front-end.

admin_init only s'exécute dans le tableau de bord.

init fonctionne sur both le front-end ainsi que le tableau de bord.

Ainsi, en combinant la fonction intégrée WordPress is_admin () , et le hook init, vous pouvez construire une fonction qui vous permet de faire uniquement des tâches frontales:

add_action( 'init', 'my_init_frontend_only_function' );

function my_init_frontend_only_function() {
    // exit function if not on front-end
    if ( is_admin() ) {
        return;
    }

    // remaining code will only run on the front end....
    // do stuff here....
}
1
cale_b

Vous pouvez utiliser l'action wp_loaded pour cela.

// If u want to load a function only in the front end.
add_action( 'wp_loaded', 'my_front_end_function');
function my_front_end_function() {
    if ( !is_admin() ) { 
        // Only target the front end
        // Do what you need to do
    }
}

https://codex.wordpress.org/Plugin_API/Action_Reference/wp_loaded

0
Jarmerson