Cómo vincular archivos jQuery / Javascript externos con WordPress

14

Así que estoy usando Starkers para basar mi próximo tema de WP y me he topado con un pequeño problema, estaba incluyendo mi propia versión de jQuery en el archivo header.php pero al inspeccionar mi sitio utilizando Firebug noté que jquery se estaba descargando dos veces, hice un poco de investigación y noté que no solo estaba incluyendo el archivo sino también la función wp_head() .

Al intentar solucionar el problema, noté un comentario en el archivo del encabezado, cuyo origen se originó en el tema Twenty Ten:

/* Always have wp_head() just before the closing </head>
 * tag of your theme, or you will break many plugins, which
 * generally use this hook to add elements to <head>, such 
 * as styles, scripts, and meta tags
 */

Este es mi problema, tengo la impresión de que el archivo jQuery debe configurarse antes que cualquier otro archivo que quiera usarlo y que wp_head() debería ser lo último en el elemento <head> , estoy ligeramente confundido ahora, ya que me pregunto si debería poner wp_head() en la parte superior para que el archivo jQuery incluido en WP se use para todos mis complementos, aunque diga que no lo haga.

Comenté la línea jQuery en la función wp_head() , pero se requiere para la página de administración, así que tuve que volver a colocarla.

También me gustaría usar (al menos experimentar) con el uso de la versión CDN de Google de jQuery, ¡pero no quiero incluirla dos veces!

Espero que entiendas lo que estoy tratando de explicar, cualquier sugerencia sobre cómo puedo resolver este problema sería muy apreciada. También agradecería cualquier consejo sobre cómo manejar sus archivos JavaScript con el archivo de encabezado.

¡Gracias!

    
pregunta Ben Everard 17.08.2010 - 14:04

3 respuestas

9

A partir de la redacción de su pregunta, debe agregar scripts escribiendo las etiquetas <script> en su plantilla. Agregue sus propios scripts a través de wp_enqueue_script() en functions.php de su plantilla, configurando adecuadamente las dependencias en jQuery, y wp_head() will agrega los scripts para ti.

function my_scripts() {
    wp_enqueue_script( 'my-sweet-script', get_bloginfo('template_directory') . '/script.js', array('jquery') );
}
add_action('template_redirect', 'my_scripts');

Consulte la página de códice para obtener más información.

    
respondido por el Annika Backstrom 17.08.2010 - 14:53
7

Sugiero que eches un vistazo a 5 consejos para usar jQuery con WordPress . Entre otras cosas, muestra el código necesario para cargar jQuery desde la biblioteca de Google:

function my_init() {
    if (!is_admin()) {
        // comment out the next two lines to load the local copy of jQuery
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.3.2');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'my_init');

También puedes consultar el complemento Use Google Libraries .

    
respondido por el Travis Northcutt 17.08.2010 - 16:01
1

A pesar de que @tnorthcutt tiene razón, debe eliminar correctamente la jQuery nativa de WP si desea cargar la suya propia, está seguro de tener problemas cuando cargue una versión de jquery diferente a la de WP. Tanto el núcleo como los complementos confían en que esté allí. Por lo tanto, si no actualiza su tema con el jQuery más reciente cada vez que se actualiza WP, su sitio puede fallar.

El siguiente código se asegurará de que su tema siempre cargue la versión correcta de jquery, al buscar primero qué versión de WP está usando y luego cargar esa desde Google:

$wp_jquery_version = $GLOBALS['wp_scripts']->registered['jquery-core']->ver;
$jquery_version = ( $wp_jquery_version == '' ) ? '1.8.3' : $wp_jquery_version; // fallback, just in case 
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/'. $jquery_version .'/jquery.min.js', $jquery_version, false );
wp_enqueue_script('jquery');
    
respondido por el cjbj 31.10.2016 - 10:27

Lea otras preguntas en las etiquetas