Dans mon blog WordPress, j'ai inclus un diaporama basé sur javascript en haut, qui fonctionne bien. J'ai un fichier PHP qui contient le javascript nécessaire qui doit être inséré dans la balise <head>
au moyen d'un "add_action" dans le fichier functions.php de mon thème enfant:
function add_slideshow_js() {
include('/path/slideshow_output.php');
echo $js_output;
}
add_action( 'wp_head', 'add_slideshow_js' );
Le javascript que ce PHP génère inclut un appel au fichier javascript de contrôle:
<script src="path/slideshow.js" type="text/javascript"></script>
... suivi du javascript qui fait le diaporama de la page.
Tout fonctionne très bien, est superbe. Le problème est que, cela dépend de jQuery , mais cela fonctionnait bien, alors je me suis demandé comment jQuery était réellement inclus.
J'ai éteint tous mes plugins et ça a cessé de fonctionner. Il est donc évident que l’un d’eux comprenait jquery et lui permettait de fonctionner.
Mais j’ai pensé que j’aimerais faire en sorte que jQuery soit inclus, sans faire appel à un plugin, étant donné que je pourrais supprimer le plug-in indispensable à l’avenir, et bien sûr, je voudrais tout de même que le diaporama fonctionne.
Donc, avec tous les plugins désactivés, je pensais inclure explicitement jquery moi-même, en écrivant cette fonction dans le fichier functions.php de mon thème enfant:
function insert_jquery(){
wp_enqueue_script('jquery');
}
add_filter('wp_head','insert_jquery');
Maintenant, cela inclut jquery, mais cela s’appelle dans le pied de page, et j’expérimente que le diaporama ne fonctionnera que si jquery est appelé à l’intérieur de la balise <head
>.
Je pourrais écrire une fonction pour appeler mon propre fichier jQuery, mais j’ai l’impression que le mieux est d’utiliser le jQuery fourni avec WordPress, et de toute façon, j’ai pensé que la réactivation des plugins serait ensuite appelée jquery deux fois.
Alors, quelle fonction puis-je écrire dans le fichier functions.php de mon thème enfant qui permettra de charger le jquery WordPress dans la section <head>
de la page?
J'espère que tout cela a du sens.
Par défaut, si vous mettez en file d'attente jquery, il est ajouté dans l'en-tête, mais si un plug-in en modifie le comportement par défaut et l'ajoute dans le pied de page plutôt que dans l'en-tête, vous pouvez utiliser le code suivant pour le modifier et le forcer à ajouter à nouveau.
function insert_jquery(){
wp_enqueue_script('jquery', false, array(), false, false);
}
add_filter('wp_enqueue_scripts','insert_jquery',1);
Pour plus d'informations sur la fonction wp_enqueue_script (), visitez cette page .
function insert_jquery_in_header(){
wp_enqueue_script('jquery', false, array(), false, false);
}
add_filter('wp_enqueue_scripts','insert_jquery_in_header',1);
par défaut, wp charge les fichiers js dans le pied de page. Vous pouvez donc le forcer à se charger dans l'en-tête. J'espère que cela vous aidera!
Mon hypothèse est que vous avez un plugin manipulant l'enregistrement de script pour que jQuery se charge dans le pied de page. Je suis assez sûr qu'il se charge dans le <head>
par défaut. Vous pouvez essayer de faire fonctionner votre diaporama s’il est inclus dans le pied de page ou vous pouvez déterminer quel plugin est à l’origine du problème et essayer de le corriger. Ceci peut-être fonctionne mais je ne l’ai pas testé.
function insert_jquery(){
wp_enqueue_script('jquery');
}
add_filter('wp_enqueue_scripts','insert_jquery',1);
Dans l’ensemble, ce que vous faitesn’est pas le bon cheminpour charger des scripts. Vous devriez être enregistrez et en file d'attenteslideshow.js
et presque certainement en extrayant le code Javascript de slideshow_output.php
et enregistrez et en file d'attente , en passant des variables au script via wp_localize_script
. Vous pouvez ensuite utiliser le paramètre $deps
(voir les liens) pour vous assurer que tout se charge dans la séquence dans laquelle il doit être chargé.