Je doute qu'il y ait un problème avec plugins_url()
mais c'est un comportement étrange que je constate.
J'ai le suivant dans un plugin activé
function include_masonry() {
wp_enqueue_script( 'masonry', plugins_url('js/masonry.min.js', __FILE__), array(), '3.2.1', true );
wp_enqueue_script( 'my_init_script', plugins_url('js/my_init_script.js', __FILE__), array(), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'include_masonry' );
Je suis arrivé à cela après avoir utilisé get_template_directory_uri()
mais j'ai décidé de ne pas le faire car je veux que tous les plug-ins pertinents soient dans le dossier du plugin.
Ceci est la sortie dans le pied de page:
<script type='text/javascript' src='http://example.com/wp-includes/js/masonry.min.js?ver=3.1.2'></script>
<script type='text/javascript' src='http://example.com/wp-content/plugins/myplugin/js/my_init_script.js?ver=1.0.0'></script>
La seconde va bien mais la première a 2 erreurs.
1) Pourquoi est-ce ?ver=3.1.2
quand j'ai spécifié 3.2.1? Ce n'est pas une faute de frappe.
2) Pourquoi ne charge-t-on pas masonry.min.js à partir du dossier du plugin!? plugins_url()
semble renvoyer ce que get_template_directory_uri()
renvoie, mais uniquement pour masonry.min.js
. J'ai durement rafraîchi, supprimé le fichier de plug-in, reuploaded, échangé les lignes wp_enqueue_script
, et il pointe toujours vers le mauvais répertoire avec le mauvais paramètre de version.
La maçonnerie est déjà enregistrée par WordPress.
De wp-includes/script-loader.php
:
// Masonry v2 depended on jQuery. v3 does not. The older jquery-masonry handle is a shiv.
// It sets jQuery as a dependency, as the theme may have been implicitly loading it this way.
$scripts->add( 'masonry', "/wp-includes/js/masonry.min.js", array(), '3.1.2', 1 );
$scripts->add( 'jquery-masonry', "/wp-includes/js/jquery/jquery.masonry$dev_suffix.js", array( 'jquery', 'masonry' ), '3.1.2', 1 );
Donc, votre première wp_enqueue_script()
n'enregistre pas à nouveau la maçonnerie. WordPress utilise la ressource déjà existante. plugins_url()
n'est pas lié, sa valeur n'est même pas utilisée.