Metodă corectă de a rula scripturi cu dependințe fără a folosi enqueue?
Cu funcția enqueue, ai modifica parametrul $deps
pentru a specifica scriptul sau array-ul de scripturi necesare pentru ca scriptul tău să funcționeze.
<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>
De exemplu:
function script_that_requires_jquery() {
wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );
Eu de obicei fac asta, dar nu pare să funcționeze mereu:
function script_that_requires_jquery(){
if ( wp_script_is( 'jquery', 'done' ) ) { ?>
<script type="text/javascript">
(function($) {
// funcția jQuery aici
})( jQuery );
</script>
<?php }
}
add_action('wp_footer', 'script_that_requires_jquery');
Poate aceasta este soluția?
function script_that_requires_jquery(){
wp_enqueue_script( 'jquery' );
?>
<script type="text/javascript">
(function($) {
// funcția jQuery aici
})( jQuery );
</script>
<?php
}
add_action('wp_footer', 'script_that_requires_jquery');

function script_that_requires_jquery() {
wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );
Acesta este metoda corectă de a încărca scripturi (și stiluri de asemenea). Ar trebui să folosești întotdeauna wp_enqueue_scripts
pentru a atașa scripturi și stiluri.
Sunt câteva aspecte de verificat atunci când înregistrezi scripturi și stiluri. În primul rând, asigură-te că ordinea în care le plasezi în funcție este corectă. Primul script din funcție va rula primul, al doilea al doilea etc. Deci, nu poți plasa scriptul dependent de jQuery înaintea lui jQuery, nu va funcționa.
Altă capcană potențială este add_action( $hook, $function_to_add, $priority, $accepted_args );
. Fără a seta parametrul $priority
, există întotdeauna riscul ca scriptul/stilul tău să fie încărcat înaintea altor scripturi/stiluri care ar putea să le suprascrie.
În cazul tău, scriptul tău ar putea fi încărcat înaintea lui jQuery, deci nu va funcționa. Eu setez întotdeauna acest parametru cu o prioritate foarte mică (număr foarte mare) când adaug scripturi și stiluri custom. Acest lucru asigură că scripturile și stilurile mele se încarcă ultimele. De exemplu, voi face așa:
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery', 999 );
