¿No puedes encolar scripts en el pie de página?
El codex de WordPress dice:
$in_footer
(booleano) (opcional) Normalmente los scripts se colocan en la sección head. Si este parámetro es true el script se coloca al final del footer. Esto requiere que el tema tenga el hook wp_footer() en el lugar apropiado. Ten en cuenta que tienes que encolar tu script antes de que se ejecute wp_head, incluso si se colocará en el footer. (Nuevo en WordPress 2.8) Por defecto: false
Así que agregué true
después de cada src path
del script:
/**
* JavaScript
*/
function my_scripts_method() {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js', true );
wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
function media_queries_script() {
wp_register_script( 'mediaqueries', get_template_directory_uri() . '/js/css3-mediaqueries.js', true );
wp_enqueue_script( 'mediaqueries' );
}
add_action('wp_enqueue_scripts', 'media_queries_script');
function custom_script() {
wp_register_script( 'custom', get_template_directory_uri() . '/js/custom.js', true );
wp_enqueue_script( 'custom' );
}
add_action('wp_enqueue_scripts', 'custom_script');
function replace_script() {
wp_register_script( 'replace', get_template_directory_uri() . '/js/jquery.ba-replacetext.min.js', true );
wp_enqueue_script( 'replace' );
}
add_action('wp_enqueue_scripts', 'replace_script');
Pero los scripts siguen incluyéndose en el encabezado.
¿Alguna sugerencia para arreglar esto?

¿Dónde colocaste tu código?
- El argumento "true" va en
wp_register_script();
, no enwp_enqueue_script();
La función es:
<?php wp_enqueue_script('handle', 'src', 'deps', 'ver', 'in_footer'); ?>
significa
<?php wp_enqueue_script('NombreMiScript', 'ruta/a/MiScript',
'dependencias_MiScript', 'VersionMiScript', 'EnFooterVerdaderoOFalso'); ?>
EJEMPLO:
<?php
wp_enqueue_script('mi_script', WP_CONTENT_URL . 'plugins/mi_plugin/mi_script.js', array('jquery', 'otro_script'), '1.0.0', true);
?>
- ¿Tu tema tiene
<?php wp_footer(); ?>
al final de la página?
3. Añade la acción con add_action('wp_print_scripts', 'tu_funcion');
Dicho esto, tu mejor práctica sería:
<?php
if (function_exists('cargar_mis_scripts')) {
function cargar_mis_scripts() {
if (!is_admin()) {
wp_deregister_script( 'jquery' );
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js');
wp_enqueue_script('jquery');
wp_register_script('miscript', bloginfo('template_url').'/js/miScript.js'__FILE__), array('jquery'), '1.0', true );
wp_enqueue_script('miscript');
}
}
}
add_action('init', 'cargar_mis_scripts');
?>
o add_action('wp_print_scripts', 'registrar_js_dl');

Gracias, ahora está funcionando, pero me di cuenta de que colocar el true
ya sea en wp_enqueue
o en wp-register_script
funciona bien.

@krembo99 La función wp_register_script()
toma la misma cantidad de argumentos y ambas agregan al array global $wp_scripts
y al subarray data
. Al combinar la información incorrecta con la pésima legibilidad de tu respuesta, tengo que darte un -1 (se eliminará al rehacer).

Me gustaría simplificar la respuesta aquí... Cuando uses wp_enqueue_script o wp_register_script para cargar un script en el footer, debes asegurarte de incluir también los otros parámetros, incluso si están vacíos.
Yo estaba intentando...
wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', true);
Lo cual no funcionó como @janoChen notó. WordPress requiere
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
Así que necesitas incluir '',
para los parámetros que no estés usando si quieres declarar la función inline. Por lo tanto, el siguiente código funciona como se planeó.
wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', '', '', true);
Posteriormente puedes declarar la función en formato de array como muestra @Brian Fegter.

Según la documentación oficial de WordPress (Última verificación - Mayo 2018):
https://developer.wordpress.org/reference/functions/wp_enqueue_script/
y experiencia personal de más de 7 años.
Siempre deberías intentar usar la función 'wp_enqueue_scripts' para una mejor compatibilidad con plugins/temas instalados.
add_action('wp_enqueue_scripts','your_plugin_enqueue');
Puedes encontrar más información sobre el uso en la documentación oficial aquí
/**** wp_register_script, wp_enqueue_script, wp_dequeue_script *** *** Recomendación personal * - Recomiendo encarecidamente registrar todos los scripts antes de encolarlos, * nuevamente -> para una mejor compatibilidad con otros desarrolladores. * :::: Por ejemplo, para que otros puedan manipular la posición * de tus scripts usando el método wp_dequeue_*tipo* * (wp_dequeue_script, wp_dequeue_style,...) *** Documentación Oficial * $in_footer * - (bool) (Opcional) Si encolar el script antes de </body> en lugar de en el <head>. Por defecto 'false'. * - Valor por defecto: false * ***/ // ejemplos: function your_plugin_enqueue(){ wp_dequeue_script('some_script(s)'); // eliminar script conflictivo wp_register_script( $handle, $src, $deps, $ver, $in_footer=true ); wp_enqueue_script($handle); wp_register_script('some_script(s)', $src, $deps, $ver, $in_footer=true); // volver a encolar scripts después del tuyo para eliminar conflictos wp_enqueue_script('some_script(s)'); } add_action('wp_enqueue_scripts','your_plugin_enqueue');
P.D. Si encuentras útil esta respuesta, por favor dale un '▲' (FlechaArriba), si crees que se puede mejorar, comenta debajo.
