web-dev-qa-db-fra.com

Meilleure façon d'inclure des scripts sur une page de modèle spécifique

C'est quelque chose qui m'a toujours dérouté et je pourrais avoir besoin d'aide.

Je veux faire quatre choses directement au-dessus de la balise de fermeture:

  1. inclure jQuery (la version WordPress convient)
  2. inclure un plugin jQuery dépendant de jQuery sous cette
  3. initialiser le plugin directement sous ce plugin ET éviter les problèmes de conflit en utilisant $ au lieu de jQuery
  4. faites cela uniquement sur des modèles de page ou des fichiers de thème spécifiques

Je comprends que je devrais probablement utiliser wp_enqueue_script, mais je ne sais pas si je devrais l’utiliser dans functions.php ou tout simplement directement sur la page où je le souhaite.

En ce qui concerne le numéro 3, j'ai vu les solutions de contournement telles que:

jQuery(function ($) {
/* You can safely use $ in this code block to reference jQuery */
});

Mais honnêtement, je suis confus quant à la manière de mettre en œuvre cela.

Quel est le meilleur moyen d'y parvenir?

Merci beaucoup.

1
jw60660

Ce qui suit (dans le functions.php de votre thème) enregistrera votre script et définira jQuery comme dépendance. Ainsi, lorsque vous le mettez en file d'attente, jQuery sera également mis en file d'attente.

function my_scripts_method() {
   // register your script location, dependencies and version
   wp_register_script('my_custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0' );

}
add_action('wp_enqueue_scripts', 'my_scripts_method');

Vous pouvez ensuite mettre en file d'attente votre script de deux manières. Dans le functions.php de votre thème, vous pouvez utiliser le filtre template_include pour obtenir le modèle utilisé à l'aide de is_page_template()

add_filter( 'template_include', 'my_load_script_for_template', 1000 );
function my_load_script_for_template( $template ){
     if(is_page_template('my-template.php'))
        wp_enqueue_script('my_custom_script');

return $template;
}

Si vous utilisez la version 3.3+ et que votre thème appelle wp_footer() , vous pouvez simplement appeler wp_enqueue_script('my_custom_script') dans la page du modèle.

5
Stephen Harris

Je ne suis pas sûr que ce soit toujours (ou ait jamais été) le "meilleur moyen" depuis que je n'ai pas eu le temps de parcourir les dernières mises à jour de développement, mais je commencerai par décrire comment je le fais:

function my_slider_script() {
  if ( !is_page_template( 'slider.php' ) )
  return;
    wp_enqueue_script('jquery-ui-core');
    wp_enqueue_script('jquery-ui-tabs');
    wp_enqueue_script( 'my_rotator_script', get_template_directory_uri() . '/js/photo_rotator_tabs.js', array('jquery'));
  }
add_action( 'template_redirect', 'my_slider_script' )

Les deux premiers utilisent le js inclus dans WordPress, et le 'my_rotator_script' en est un que j'ai inclus dans mon dossier de modèles dans un dossier js à la racine du thème appelé photo_rotator_tabs.js. Il est uniquement inclus sur les pages qui utilisent le modèle de page slider.php.

Je pense que Scribu a écrit un article très détaillé sur ce sujet, mais je ne me souviens pas du lien. Je pense qu'il utilise la méthode wp_print_scripts, ou la méthode "WordPress Ninja" . Peut-être qu'il t'aidera si mon objet est obsolète.

1
Jeremy Jared