Nu pot încărca jQuery în scriptul de editare a postării

13 ian. 2013, 21:02:23
Vizualizări: 460
Voturi: -1

În codul de mai jos, dacă nu adaug manual o referință la biblioteca jQuery, funcțiile mele jQuery de pe pagină nu funcționează. Ce este greșit în metoda de încărcare pe care încerc să o folosesc?

În functions.php:

if(is_admin())
{

/* ÎNCĂRCARE SCRIPȚI ADMIN
**********************************/
require_once(TEMPLATEPATH . '/functions_private.php');

}

În 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("Ai jQuery încărcat");//NU VA FUNCȚIONA DECÂT DACĂ ADAUG MANUAL REFERINȚA LA JQUERY
        }           

        jQuery(document).ready(function()
        {
        //aici se adaugă funcțiile jQuery
        }

    }//FINAL FUNCȚIE 

}//FINAL IF
1
Comentarii

Deoarece întrebarea este despre ascultătorii de evenimente JS, prin urmare este off-topic. Am votat pentru închidere.

kaiser kaiser
13 ian. 2013 22:41:00
Toate răspunsurile la întrebare 4
4

Folosește hook-ul admin_enqueue_scripts pentru a adăuga propriul script personalizat. Pune-l într-un fișier extern și utilizează wp_localize_script pentru a transmite date din php în javascript. jQuery este deja utilizat în partea de administrare, adăugarea unui tag script care îl încarcă de la google va provoca probleme.

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 ian. 2013 21:40:20
Comentarii

Nu încerc să folosesc propriul meu script. Încerc să folosesc copia jQuery din WordPress. Din păcate, nu funcționează. Când înlocuiesc admin_print_scripts cu admin_enqueue_scripts, nici atunci nu funcționează.

Scott B Scott B
13 ian. 2013 22:14:57

Încearcă hook-ul admin_footer

diggy diggy
13 ian. 2013 22:15:57

+1 diggy! Funcționează, dar acum scriptul meu aparent a stricat administrarea WordPress. Niciunul dintre panouri nu se mai deschide/închide. Totuși, scriptul meu funcționează bine. Primesc o eroare în consolă: Uncaught TypeError: Cannot call method 'toLowerCase' of undefined. Te rog postează răspunsul tău ca să-l pot accepta.

Scott B Scott B
13 ian. 2013 22:24:58

pentru că adaugi propria ta copie a jQuery dintr-o sursă externă, din nou, acest lucru va afecta interfața de administrare așa cum ai văzut deja. WordPress vine deja cu jQuery inclus, ar trebui să fie deja prezent pe majoritatea paginilor de administrare, întrucât tot codul JavaScript din interfața de administrare îl folosește. nu injecta tag-uri script direct în pagină, folosește funcția de încărcare (enqueue) pentru fișierele externe ale scripturilor tale.

Milo Milo
13 ian. 2013 22:54:59
2

WordPress jQuery nu suportă $ implicit.

Mai întâi adaugă jQuery.

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

înlocuiește acest cod:

jQuery(document).ready(function()
        {
        //jquery bits go here
        }

cu:

jQuery(document).ready(function($) {
    // $() va funcționa ca un alias pentru jQuery() în interiorul acestei funcții
});
13 ian. 2013 21:21:09
Comentarii

Nu folosesc caracterul $ în codul meu jQuery, deci acest lucru nu este cu adevărat relevant pentru întrebare. Problema mea este că jQuery nu se încarcă deloc (vezi întrebarea actualizată)

Scott B Scott B
13 ian. 2013 21:32:47

vezi răspunsul actualizat!

Muhammad Furqan Muhammad Furqan
13 ian. 2013 21:41:28
0

Cârligul admin_footer se dovedește a fi cel potrivit pentru codul lui Scott B. Cu toate acestea, se recomandă în general să folosiți funcția de încărcare a scripturilor (și să declarați dependența de jQuery) așa cum este descris în răspunsul lui @Milo

13 ian. 2013 22:35:09
0

Ascultători de evenimente

Simplu:

  • Scriptul se execută imediat când îl rulezi, deoarece nu folosește niciun ascultător de evenimente JavaScript cum ar fi așteptarea până când DOM-ul sau fereastra sau orice altceva se încarcă.
  • Scriptul încărcat (jQuery) va fi randat pe cârligele sale corespunzătoare: În head sau - dacă este încărcat în mijlocul paginii - în footer.

Prin urmare, jQuery nu este disponibil atunci când îl apelezi.

13 ian. 2013 22:40:02