wp_enqueue_script() nu funcționează deloc
Încerc să încarc fișiere JavaScript folosind wp_enqueue_script(), dar nu funcționează deloc. Iată codul meu:
function load_css_js() {
// Încarcă fișierul CSS de bază
wp_enqueue_style('gdgt-base', get_template_directory_uri() . '/css/gdgt-base.css');
// Încarcă fișierul CSS pentru iconițe
wp_enqueue_style('gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css', true);
// Înregistrează scriptul JavaScript de bază
wp_register_script('gdgt-base', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ) , true);
// Încarcă scriptul JavaScript înregistrat
wp_enqueue_script('gdgt-base');
}
add_action('wp_enqueue_scripts', 'load_css_js');
Totuși, când deînregistrez JavaScript-ul implicit WP și înregistrez jQuery din altă parte, funcționează. Ce ar putea cauza această problemă? Mulțumesc pentru ajutor!

wp_enqueue_style
și wp_enqueue_script
acceptă mulți parametri și este foarte important să îi utilizați în ordinea corectă, altfel aceste funcții vor eșua.
Mai jos sunt seturile complete de parametri pentru fiecare funcție.
wp_enqueue_style( $handle, $src, $deps, $ver, $media );
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
În wp_enqueue_style
ați definit corect $handle
și $src
, dar $deps
l-ați setat la true
, ceea ce nu este corect. Același lucru este valabil și pentru wp_enqueue_script
.
Iată funcția corectată.
function load_css_js() {
wp_enqueue_style( 'gdgt-base', get_template_directory_uri() . '/css/gdgt-base.css', false, NULL, 'all' );
wp_enqueue_style( 'gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css', false, NULL, 'all' );
wp_register_script( 'gdgt-base', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ), NULL, false );
wp_enqueue_script( 'gdgt-base' );
}
add_action( 'wp_enqueue_scripts', 'load_css_js' );
Pentru mai multe informații, citiți documentația pentru fiecare funcție în codex.

EDIT: Se pare că încarcă fișierul JS, dar codul din fișierul JS nu funcționează. (Funcționează dacă dezactivez jQuery-ul implicit). | Din păcate, codul fixat nu funcționează :(

Tocmai l-am testat și funcționează corect. Cred că în tema ta altă funcție suprascrie output-ul. Caută alte funcții wp_enqueue_scripts
...

Acesta este un subiect complet diferit de ce codul tău din fișierele JS nu funcționează. Motivul principal pentru care codul JS nu funcționează cu jQuery
din nucleu, dar funcționează cu jQuery
extern, ar putea fi faptul că jQuery
din nucleu rulează în modul noconflict. Iar codul tău JS nu. Va trebui să modifici codul JS pentru jQuery noconflict.

Problema este că încarc cea mai recentă versiune de jQuery de la http://code.jquery.com/jquery-latest.min.js și funcționează. Deci ce ar putea cauza conflictul?

Iată soluția pentru cealaltă problemă a ta. De ce $ pentru jQuery nu funcționează?. Convertește codul tău pentru modul jQuery noconflict și va funcționa.

Mulțumesc mult, Robert! Dacă mai întâlnește cineva această problemă, folosește pur și simplu: (function($){
$(document).ready(function(){
//your code
});
})(jQuery);
:)

Hmm, am o altă întrebare, am înlocuit false
cu true
pentru $in_footer
dar nu funcționează. M-am uitat și în codex și se pare că există true
într-unul din exemplele lor. Dar din nu știu ce motiv, la mine nu merge.

De obicei ar trebui să funcționeze, nu sunt sigur de ce nu merge în cazul tău.

Se pare că folosești același handle pentru a înregistra un script și o foaie de stil. Nu sunt sigur dacă asta e o problemă sau nu, deoarece unul este CSS și celălalt JS gdgt-base'

Pentru alți inepți ca mine, am zis să contribui și eu aici. :-)
Tocmai am petrecut o oră pentru că scrisesem array( '' )
în loc de array()
în dependințe.
Să știți că există o diferență între:
wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array( '' ), false, true );
și
wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array(), false, true );
...Prima variantă nu va funcționa niciodată. A doua va merge. :-)
Răspunsul lui @Robert_Hue m-a condus la soluția mea.

Când înregistrați și adăugați scripturi în coadă, nu este necesar să apelați atât wp_register_script(), cât și wp_enqueue_script(). Puteți apela doar wp_enqueue_script().
Sintaxa de bază a funcției wp_enqueue_script este:
wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
Conform codului dvs., ar trebui să arate astfel:
function load_css_js() {
wp_enqueue_style('gdgt-base-style', get_template_directory_uri() . '/css/gdgt-base.css');
wp_enqueue_style('gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css');
wp_enqueue_script('gdgt-base-script', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ) , '2019' true);
}
add_action('wp_enqueue_scripts', 'load_css_js');
[vizitați]: https://developer.wordpress.org/reference/functions/wp_enqueue_script/
documentația pentru mai multe informații.
