Comment puis-je utiliser is_page() dans un plugin ?
-
23-12-2019 - |
Question
Je veux que mon plugin enregistre un script uniquement dans une certaine page.
Par exemple, dans mon fichier plugin, je veux écrire quelque chose comme ceci :
if (is_page()) {
$pageid_current = get_the_ID();
$page_slug = get_post($pageid_current)->post_name;
if ($page_slug == 'articles'){
wp_register_script('myscript', '/someurl/main.js');
}
}
Mais j'obtiens l'erreur :
is_page n'a pas été appelé correctement.Les étiquettes de requête conditionnelles ne fonctionnent pas avant l'exécution de la requête.Avant cela, ils renvoient toujours false.Veuillez consulter le débogage dans WordPress pour plus d'informations.(Ce message a été ajouté dans la version 3.1.)
Comment puis-je, à l'intérieur d'un plugin, enregistrer un script dans une certaine page ?
La solution
is_page()
ne fonctionne que dans les fichiers modèles.
Et pour l'utiliser dans les fichiers du plugin, vous devez l'utiliser avec la combinaison de template_redirect
crochet d'action.
Ce crochet d'action s'exécute juste avant que WordPress ne détermine quelle page de modèle charger.
L'extrait suivant fonctionnerait donc :
add_action( 'template_redirect', 'plugin_is_page' );
function plugin_is_page() {
if ( is_page( 'articles' ) ) {
wp_register_script( 'my-js-handler', '/someurl/main.js', [], '1.0.0', true );
}
}
Autres conseils
Vous pourriez utiliser is_page()
après la redirection du modèle, vous devez donc ajouter le hook comme ceci :
add_action('template_redirect','your_function');
function your_function(){
if ( is_page('test') ) {
// do you thing.
}
}
Vous devez
function deregister_my_script() {
if (!is_page('page-d-exemple') ) {
wp_deregister_script( 'custom-script-1' );
}
}
add_action('wp_print_scripts', 'deregister_my_script', 100 );