Non riesco a caricare jQuery nello script di modifica del post

13 gen 2013, 21:02:23
Visualizzazioni: 460
Voti: -1

Nel codice qui sotto, a meno che non inserisca manualmente un riferimento alla libreria jQuery, le mie funzioni jQuery nella pagina non funzionano. Cosa c'è di sbagliato nel metodo enqueue che sto cercando di usare?

In functions.php:

if(is_admin())
{

/* CARICA SCRIPT ADMIN
**********************************/
require_once(TEMPLATEPATH . '/functions_private.php');

}

In functions_private.php:

if( 'post.php' == $pagenow )
{

    add_action('admin_print_scripts', 'my_load_ui_script');

    function my_load_ui_script()
    {
    wp_enqueue_script('jquery');
    ?>
        <!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>-->
        <script>
        if(typeof jQuery!="undefined"){
            alert("Hai jQuery caricato");//NON PARTE A MENO CHE NON INSERISCA MANUALMENTE JQUERY
        }           

        jQuery(document).ready(function()
        {
        //codice jQuery va qui
        }

    }//FINE FUNZIONE 

}//FINE IF
1
Commenti

Poiché la domanda riguarda i listener di eventi JS, è quindi fuori tema. Votato per la chiusura.

kaiser kaiser
13 gen 2013 22:41:00
Tutte le risposte alla domanda 4
4

Utilizza l'hook admin_enqueue_scripts per aggiungere il tuo script personalizzato. Mettilo in un file esterno e usa wp_localize_script per passare eventuali dati da php a javascript. jQuery è già utilizzato nella parte admin, aggiungere un tag script che lo carichi da google causerà problemi.

function wpa80418_admin_enqueue( $hook ) {
    if( 'post.php' != $hook )
        return;
    wp_enqueue_script(
        'my_custom_script',
        get_template_directory_uri() . '/js/myscript.js',
        array('jquery')
    );
}
add_action( 'admin_enqueue_scripts', 'wpa80418_admin_enqueue' );
13 gen 2013 21:40:20
Commenti

Non sto cercando di utilizzare il mio script. Sto cercando di utilizzare la copia di jQuery di WordPress. Sfortunatamente, non funziona. Quando sostituisco admin_print_scripts con admin_enqueue_scripts non funziona neanche.

Scott B Scott B
13 gen 2013 22:14:57

Prova con l'hook admin_footer

diggy diggy
13 gen 2013 22:15:57

+1 diggy! Funziona ma ora il mio script apparentemente ha incasinato l'admin di WordPress. Nessuno dei pannelli si apre/chiude più. Il mio script però funziona bene. Ottengo un errore nella console: Uncaught TypeError: Cannot call method 'toLowerCase' of undefined. Per favore posta la tua risposta così posso accettarla.

Scott B Scott B
13 gen 2013 22:24:58

perché stai aggiungendo la tua copia di jQuery da una fonte esterna, di nuovo, questo romperà l'interfaccia di amministrazione come hai visto. WordPress include già jQuery, dovrebbe già essere presente nella maggior parte delle pagine di amministrazione, dato che tutto il javascript nell'interfaccia di amministrazione lo utilizza. non inserire tag script direttamente nella pagina, accoda file esterni per i tuoi script.

Milo Milo
13 gen 2013 22:54:59
2

WordPress jQuery non supporta $ di default.

Per prima cosa aggiungi jQuery.

function my_scripts_method() {
    wp_enqueue_script(array('jquery'));
}
add_action('admin_enqueue_scripts', 'my_scripts_method');

sostituisci questo codice:

jQuery(document).ready(function()
        {
        //qui vanno i bit jquery
        }

con:

jQuery(document).ready(function($) {
    // $() funzionerà come alias per jQuery() all'interno di questa funzione
});
13 gen 2013 21:21:09
Commenti

Non sto utilizzando il carattere $ nel mio codice jQuery, quindi questo non è realmente pertinente alla domanda. Il mio problema è che jQuery non si carica affatto (vedi domanda aggiornata)

Scott B Scott B
13 gen 2013 21:32:47

vedi risposta aggiornata!

Muhammad Furqan Muhammad Furqan
13 gen 2013 21:41:28
0

L'hook admin_footer si dimostra quello giusto per il codice di Scott B. Tuttavia, è generalmente consigliato accodare gli script (e dichiarare la loro dipendenza da jQuery) come descritto nella risposta di @Milo

13 gen 2013 22:35:09
0

Event listener

Semplice:

  • Lo script viene eseguito immediatamente quando lo avvii, poiché non utilizza alcun event listener JavaScript come attendere che il DOM o la finestra o altro vengano caricati.
  • Lo script accodato (jQuery) verrà renderizzato sui suoi hook appropriati: Nell'intestazione (head) o - se accodato a metà pagina - nel piè di pagina (footer).

Pertanto jQuery semplicemente non è disponibile quando lo chiami.

13 gen 2013 22:40:02