Domanda

Così sto usando Starkers di basare il mio prossimo tema WP su e ho incontrato un piccolo problema, mi è stato compreso il mio propria versione di jQuery nel file header.php ma quando si ispeziona il mio sito utilizzando Firebug ho notato jquery stava comportando scaricato due volte, ho fatto un po 'di scavo e ho notato che non solo ero incluso il file ma lo era anche la funzione wp_head().

Nel tentativo di risolvere il problema che ho notato un commento nel file di intestazione, di che ha avuto origine è venuto dal 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
 */

Così qui è il mio problema, ho l'impressione che il file jQuery deve essere impostato prima di qualsiasi altro file che vuole usarlo e che wp_head() dovrebbe essere l'ultima cosa nell'elemento <head>, sto un po 'confuso ora come mi chiedo dovrei mettere wp_head() in alto in modo che il WP inclusi file di jQuery verrà utilizzato per tutti i miei plugin, anche se si dice di non farlo.

ho fatto un commento fuori la linea jQuery nella funzione wp_head() ma è richiesto per la pagina di amministrazione, quindi ho dovuto rimetterlo.

Mi piacerebbe anche l'uso (almeno esperimento) con l'utilizzo della versione di Google CDN di jQuery, ma non voglio includere due volte!

Spero che tu capisca quello che sto cercando di spiegare, qualche suggerimento su come posso risolvere questo problema sarebbero apprezzate. Mi piacerebbe anche apprezzare qualche consiglio su come gestire i tuoi file JavaScript con il file di intestazione.

Grazie!

È stato utile?

Soluzione

Dalla formulazione della tua domanda, deve essere l'aggiunta di script scrivendo tag <script> nel modello. Aggiungere i propri script tramite wp_enqueue_script() nel functions.php del tuo modello, opportunamente dipendenze impostazione su jQuery, e wp_head() aggiungerà gli script per voi.

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

codice pagina per maggiori informazioni.

Altri suggerimenti

suggerisco di dare un'occhiata a href="http://www.ericmmartin.com/5-tips-for-using-jquery-with-wordpress" 5 punte per l'utilizzo di jQuery con WordPress . Tra le altre cose, mostra il codice necessario per caricare jQuery dalla libreria di 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');

Si potrebbe anche verificare il plug Utilizzare Google Biblioteche .

Anche se @tnorthcutt è corretto che si dovrebbe correttamente dequeue jquery natale di WP, se si desidera caricare il proprio, si è certi di incorrere in problemi quando si sta caricando una versione jQuery diversa quel nucleo WP. Sia core e plugin basano su di esso essere lì. Quindi, se non si aggiorna il tema con la più recente jquery ogni volta WP viene aggiornato, il sito potrebbe rompersi.

Il seguente codice assicurarsi che il tema sempre carichi la versione corretta di jQuery, in primo luogo guardando la versione WP è l'utilizzo e quindi il caricamento di quella da 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');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top