web-dev-qa-db-fra.com

Chargement de scripts sur des pages spécifiques

Dans le thème de l'enfant, j'ai créé un fichier functions.php qui charge les scripts et les fichiers de style. Le code est ci-dessous. La section qui charge les bibliothèques et les scripts sur toutes les pages autres que admin, autrement dit les deux premières fonctions, fonctionne comme prévu. Cependant, la troisième fonction, conçue pour charger un script pour une page spécifique, ne se charge pas. Il semble que mon problème concerne la spécification de la condition de la page. Le reste du code pour register et en file d'attente fonctionne s'il est placé dans la fonction générale qui charge les scripts pour toute page autre que les pages d'administration. J'ai fait des recherches pour trouver des exemples montrant pourquoi l'approche que j'ai utilisée ne fonctionne pas. J'ai échangé l'identifiant de page avec le nom de la page, mais en vain.

Toute suggestion sur la source du problème serait grandement appréciée.

Merci.

    <?php

function scripts () {
    if ( !is_admin() ) { 
        wp_enqueue_script('jquery');
        wp_register_script('jqueryUI', "path", array('jquery')); //register custom UI library
        wp_enqueue_script('jqueryUI');
        wp_register_script('popUp1', ("path"), array('jquery', 'jqueryUI'));
        wp_enqueue_script('popUp1');
        wp_register_script('popUpText', 'path', array('jquery', 'jqueryUI'));
        wp_enqueue_script('popUpText');
    }
}

add_action('init', 'scripts');

//INSERT CSS    files into the header
function styles () {
    if ( !is_admin() ) {
        wp_register_style('jqueryUIcss', "path");
        wp_enqueue_style('jqueryUIcss');
        wp_register_style('valuecss', "path");
        wp_enqueue_style('valuecss');
    }
}   
    add_action('init', 'styles');

//Add scripts for pop ups on "how to estimate value" page
function pagePopUps1 () {
    if ( is_page(16)) { 
        wp_register_script('popUpVideo1', "path", array('jquery', 'jqueryUI'));
        wp_enqueue_script('popUpVideo1');

    }
}

add_action('init', 'pagePopUps1');  



//End of file
?>

Remarque par souci de brièveté, j'ai supprimé les codes source, mais ceux-ci ont été validés et ne constituent pas la source du problème.

2
dorich

Je suggèrerais de déplacer le script s’enregistrant dans l’action init et de déplacer la ou les files de mise en file dans un rappel relié à wp_print_scripts.

Par exemple.

add_action( 'init', 'register_those_scriptsNstyles' );

function register_those_scriptsNstyles() {
    wp_register_script( .. your script params .. );
    wp_register_style( .. your style params ..  );

    ..etc..
}

add_action( 'wp_print_scripts', 'enqueue_those_scriptsNstyles' );

function enqueue_those_scriptsNstyles() {

    if( !is_page( 'some-page' ) ) // If it's not the given page, stop here
        return;

    wp_enqueue_script( .. your script params .. );
    wp_enqueue_style( .. your style params .. );

    ..etc..
}

REMARQUE: Malgré le nom du crochet, je suis presque sûr que wp_print_scripts devrait également convenir aux styles de mise en file d'attente. Le facteur important est simplement de vous assurer que le hook que vous utilisez a lieu suffisamment tard pour que les balises du modèle conditionnel soient définies, c.-à-d. is_page, is_category et ainsi de suite ..
Si non, essayez plutôt wp_head .. par exemple. add_action( 'wp_head', 'your-callback' )

EDIT: Pour les styles, tout comme le côté administrateur, le côté public a une action pour les styles sur .. qui est wp_print_styles .. (le hook se met en file d'attente pour styles à cet endroit).

J'espère que cela pourra aider..

2
t31os

Les premières choses à vérifier dans de tels cas:

  • la fonction accrochée déclenche correctement;
  • la condition est-elle évaluée au résultat attendu?.

Ajoutez var_dump( is_page(16) ); à votre fonction et voyez si elles fonctionnent comme prévu.

0
Rarst