wp_enqueue_script() no funciona en absoluto
Estoy intentando encolar archivos JavaScript usando wp_enqueue_script(), pero no funciona en absoluto. Aquí está mi código:
function load_css_js() {
wp_enqueue_style('gdgt-base', get_template_directory_uri() . '/css/gdgt-base.css');
wp_enqueue_style('gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css', true);
wp_register_script('gdgt-base', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ) , true);
wp_enqueue_script('gdgt-base');
}
add_action('wp_enqueue_scripts', 'load_css_js');
Sin embargo, cuando desregistro el JavaScript predeterminado de WP y registro jQuery desde otro lugar, funciona. ¿Qué puede estar causando este problema? ¡Gracias por la ayuda!

wp_enqueue_style
y wp_enqueue_script
aceptan muchos parámetros y es muy importante usarlos en el orden correcto, de lo contrario estas funciones fallarán.
Aquí está el conjunto completo de parámetros para cada función.
wp_enqueue_style( $handle, $src, $deps, $ver, $media );
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
En tu wp_enqueue_style
defines $handle
, $src
correctamente pero $deps
como true
lo cual no es correcto. Lo mismo ocurre con wp_enqueue_script
.
Así que aquí está tu función corregida.
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' );
Para más información, lee la documentación de cada función en el codex.

EDITADO: Parece que está cargando el archivo JS, pero el código en el archivo JS no funciona. (Funciona si desregistro el jQuery predeterminado). | Desafortunadamente, el código corregido no está funcionando :(

Acabo de probarlo y funciona bien. Creo que en tu tema alguna otra función está sobrescribiendo la salida. Busca otras funciones wp_enqueue_scripts
...

Ese es un tema completamente diferente sobre por qué tu código en archivos JS no funciona. La principal razón por la que el código JS no funciona con el jQuery
principal pero sí con el jQuery
externo podría ser que el jQuery
principal se ejecuta en modo noconflict. Y tu código JS no. Necesitarás modificar tu código JS para que sea compatible con jQuery noconflict.

La cuestión es que estoy cargando la última versión de jQuery desde http://code.jquery.com/jquery-latest.min.js y funciona. Entonces, ¿qué puede estar causando el conflicto?

Aquí está la solución a tu otro problema. ¿Por qué $ para jQuery no funciona?. Convierte tu código al modo noconflict de jQuery y funcionará.

¡Muchas gracias, Robert! Si alguien más encuentra esto, simplemente usa: (function($){
$(document).ready(function(){
//your code
});
})(jQuery);
:)

Eh, tengo otra pregunta, reemplacé false
con true
para $in_footer
pero no está funcionando. También revisé el codex y parece que hay un true
en uno de sus ejemplos. Pero por alguna razón no funciona en mi caso.

Normalmente eso debería funcionar, no estoy seguro de por qué no funciona en tu caso.

Parece que estás usando el mismo handle para registrar un script y una hoja de estilos. No estoy seguro si esto es un problema o no, ya que uno es CSS y el otro es JS gdgt-base'

Para otros despistados como yo, pensé en contribuir aquí. :-)
Acabo de pasar una hora porque había escrito array( '' )
en lugar de array()
en las dependencias.
Solo para que sepan, hay una diferencia entre:
wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array( '' ), false, true );
y
wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array(), false, true );
... El primero nunca se cargará. El segundo sí lo hará. :-)
La respuesta de @Robert_Hue me llevó a mi solución.

Al registrar y encolar scripts, no necesitas llamar a wp_register_script() y wp_enqueue_script(). Solo llama a wp_enqueue_script().
La sintaxis básica de wp_enqueue_script es:
wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
Según tu código, debería ser así:
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');
[visita]: https://developer.wordpress.org/reference/functions/wp_enqueue_script/
documentación para más información.
