Cum să incluzi corect efectele jquery-ui în WordPress

19 ian. 2011, 00:49:40
Vizualizări: 74.2K
Voturi: 29

Am încercat să includ efectele jquery ui (mai specific efectul shake) în tema mea WordPress. Până acum, am reușit doar să includ scriptul jQuery, dar nu am nicio idee unde să pun scripturile ui și cum să le încarc corect.

Acesta este codul pe care îl am. Evident, nu funcționează:

    <?php wp_enqueue_script("jquery"); ?>
<?php wp_enqueue_script("jquery-ui-core"); ?>
<?php wp_head(); ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_url'); ?>" />
<script type="text/javascript">
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
        $j("#manita-imagen").mouseover(function(){
            //$j(this).animate({ opacity: "hide" })
            // alert('asd');
            $j(this).effect("shake", { times:3 }, 300);
        });
    });

 </script>

Mulțumesc pentru ajutor!

1
Comentarii

O notă: nu ar trebui să fie nevoie să încărcați jquery, deoarece este deja listat ca o dependință a jquery-ui-core.

goldenapples goldenapples
19 ian. 2011 02:14:03
Toate răspunsurile la întrebare 6
2
41

Deși WordPress include bibliotecile jQuery UI, nu include biblioteca UI/Effects. Acea bibliotecă este separată și independentă. Va trebui să includeți o copie a fișierului effects.core.js și să-l încărcați separat.

Rețineți că ar trebui să-l denumiți jquery-effects-core când îl încărcați, pentru consistența denumirilor.

Puteți să-l includeți astfel:

wp_enqueue_script("jquery-effects-core",'http://example.com/whatever/effects.core.js', array('jquery'), '1.8.8');

Actualizare: Acest răspuns a fost scris înainte de WordPress 3.3, care acum include diverse biblioteci de efecte ca parte a nucleului. Acum puteți încărca pur și simplu părțile din biblioteca de efecte de care aveți nevoie.

Lista de slug-uri pentru aceste fișiere poate fi găsită în wp-includes/script-loader.php, dar slug-ul pentru nucleu este jquery-effects-core.

wp_enqueue_script("jquery-effects-core");
19 ian. 2011 03:52:42
Comentarii

Țineți cont că pentru a obține un efect real (blind, bounce, fade, etc.) trebuie să încărcați explicit acel efect. De exemplu, pentru 'fade': wp_enqueue_script( 'jquery-effects-fade' );

SunnyRed SunnyRed
10 feb. 2017 19:45:50

Utilizatorul ar trebui să plaseze propriul cod Javascript într-un fișier separat și apoi să încarce acel fișier, listând dependențele necesare. În acest fel, WordPress (și plugin-urile de performanță) vor ști ordinea necesară pentru încărcarea acestor scripturi și le vor plasa în ordinea corectă pe pagină.

Dave Hilditch Dave Hilditch
27 apr. 2017 10:26:23
5

@dabito,

Nu încarci scripturile corect... Nu apela wp_enqueue_script() în interiorul fișierului template al temei (se pare că este vorba de header.php). Trebuie să apelezi această funcție dintr-un hook separat.

În fișierul functions.php al temei tale, adaugă următorul cod:

function my_add_frontend_scripts() {
        wp_enqueue_script('jquery');
        wp_enqueue_script('jquery-ui-core');
}
add_action('wp_enqueue_scripts', 'my_add_frontend_scripts');

Dacă ambele scripturi sunt înregistrate corect, acest cod ar trebui să le încarce fără probleme (adăugând tag-urile <script /> corespunzătoare în header). Atunci codul tău JavaScript ar trebui să funcționeze.

Dacă dorești să adaugi scripturi pe partea de administrare, atașează acțiunea ta la admin_enqueue_scripts în loc.

19 ian. 2011 01:06:10
Comentarii

Nu este chiar adevărat. Atâta timp cât le apelează înainte de apelul wp_head(), ar trebui să funcționeze corect. Nu este necesar să fie legate de hook-uri și nici nu ar trebui să fie legate de init oricum. Dacă intenționați să le legați undeva, folosiți hook-ul de acțiune 'wp_enqueue_scripts'. Pentru asta este creat.

Otto Otto
19 ian. 2011 03:47:04

@Otto Ceea ce spui sună logic. Dar ai o explicație pentru faptul că în codex scrie ce a scris @EAMann - "Folosește acțiunea init pentru a apela această funcție."? Iar exemplul său este luat de acolo... http://codex.wordpress.org/Function_Reference/wp_enqueue_script

Lea Cohen Lea Cohen
14 feb. 2011 08:49:49

Codex-ul este neuniform în unele locuri. Cea mai bună acțiune de utilizat pentru aceasta este 'wp_enqueue_scripts' pentru partea de front-end, sau 'admin_enqueue_scripts' pentru back-end. Legarea de init va funcționa, dar va încărca inutil scriptul pe întreg site-ul.

Otto Otto
14 feb. 2011 22:54:59

Am actualizat fragmentul meu de cod în consecință. Inițial a fost o reacție rapidă, bazată pe referința din Codex... utilizarea wp_enqueue_scripts este cu siguranță o abordare mai bună și evită necesitatea unei verificări suplimentare is_admin().

EAMann EAMann
14 feb. 2011 23:45:28

Aceasta este, de asemenea, o abordare greșită - plugin-urile de performanță trebuie să cunoască dependențele. Autorul ar trebui să scrie propriul fișier .js și să îl încarce folosind funcția de enqueue, specificând dependențele - WordPress se va ocupa de restul.

Dave Hilditch Dave Hilditch
27 apr. 2017 10:27:23
4

De asemenea, poți încărca întregul jQuery UI direct de la Google. Iată cum procedez eu:

wp_enqueue_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js', array('jquery'), '1.8.6');

Și deoarece jQuery este listat ca dependență pentru jQuery UI, nu este nevoie să-l încarci manual. WordPress o va face automat pentru tine.

19 ian. 2011 14:00:35
Comentarii

Poți chiar să încărci toate bibliotecile jQuery de pe CDN-ul Google în loc să le hostezi pe propriul site.

Jan Fabry Jan Fabry
21 ian. 2011 13:16:29

Aș recomanda cu mare putere să evitați încărcarea scripturilor din surse externe. Am făcut asta mult timp și (rar) s-a întâmplat ca gazda să fie indisponibilă, astfel încât mai mulți clienți au avut probleme cu paginile lor simultan.

Julian F. Weinert Julian F. Weinert
25 mai 2014 01:32:42

@JulianF.Weinert este o sabie cu două tăișuri: un CDN bun înseamnă latență mai mică, dar lipsă de control dacă acesta eșuează. Totuși, dacă CDN-ul Google cade, jumătate din Internet va avea probleme, așa că al tău nu va fi singurul. Șansele să fie indisponibil și să nu fie deja cache-uit în browserul utilizatorului sunt mici. În majoritatea situațiilor, folosirea unui CDN este un avantaj.

Alex Alex
10 iul. 2016 22:54:56

Adevărat. Nu vorbeam despre un CDN complet, care, bineînțeles, ar fi perfect potrivit aici, deoarece este conceput exact pentru acest scop. Însă încărcarea scripturilor de pe orice john-doe.com mi se pare un pic riscantă, cred

Julian F. Weinert Julian F. Weinert
11 iul. 2016 00:22:22
3

Doar câteva sfaturi. Când adaugi scripturile folosind funcția de enqueue, acestea vor fi încărcate pe întregul site, inclusiv în panoul de administrare. Dacă nu dorești ca scripturile să fie încărcate în panoul de administrare, poți specifica să fie încărcate doar în partea de frontend a site-ului.

function my_add_frontend_scripts() {
    wp_enqueue_script('jquery');
    wp_enqueue_script('jquery-ui-core');
}

add_action( 'wp_enqueue_scripts', 'my_add_frontend_scripts');
24 aug. 2011 18:45:39
Comentarii

Nu ar trebui să folosești hook-ul init pentru încărcarea resurselor. Folosește hook-ul wp_enqueue_scripts doar pentru front-end sau hook-ul admin_enqueue_scripts pentru back-end.

Otto Otto
24 aug. 2011 19:48:07

Nu știam că acțiunea wp_enqueue_scripts este doar pentru front-end. Mulțumesc :)

Tareq Tareq
24 aug. 2011 21:31:27

Perfect, mulțumesc!

Dragi Postolovski Dragi Postolovski
24 iul. 2021 00:12:45
2

Se pare că nu există o încărcare implicită pentru această bibliotecă jQuery (lista completă aici), așa că va trebui să înregistrați scriptul înainte de a-l adăuga în coadă.

19 ian. 2011 00:51:21
Comentarii

Am crezut că ai putea avea dreptate (uneori numele sub care WP înregistrează scripturile sunt diferite de cele standard folosite) dar în acest caz, înregistrarea 'jquery-ui-core' ar trebui să funcționeze. Este listat în http://core.trac.wordpress.org/browser/branches/3.0/wp-includes/script-loader.php#L121

goldenapples goldenapples
19 ian. 2011 02:05:44

Bună observație! Am presupus că dorea să încarce doar acea bibliotecă jQuery, caz în care încărcarea restului ar fi fost puțin excesivă.

editor editor
19 ian. 2011 02:18:08
2

Toate răspunsurile de aici, deși funcționează, sunt tehnic greșite.

Modul corect de a include jquery-ui și alte biblioteci este să le adaugi ca dependințe ale propriului tău script.

Acest lucru este important, deoarece instrumentele de performanță pot verifica aceste dependințe pentru a modifica ordinea de încărcare a scripturilor și a optimiza site-ul.

Deci, dacă dorești să folosești jquery și jquery-ui, creează-ți propriul fișier .js și încarcă-l astfel, cu dependințele enumerate - nu este nevoie de o comandă separată de încărcare pentru fiecare bibliotecă pe care o folosești:

wp_enqueue_script('your-script-handle', 
 plugins_url('your-script-file.js', __FILE__), 
 array('jquery', 'jquery-effects-core', 'jquery-ui-core')
);

Poți găsi o listă cu toate scripturile disponibile pentru adăugat ca dependințe aici: https://developer.wordpress.org/reference/functions/wp_enqueue_script/

27 apr. 2017 10:24:47
Comentarii

Ați înțeles corect. Folosirea dependențelor în propriile apeluri wp_enqueue_script este metoda corectă de a include jquery/jquery-ui/etc. Nu este necesar să le încărcați separat.

Michae Pavlos Michael Michae Pavlos Michael
8 mai 2017 14:58:14

Și dacă le încărcați separat când scriptul dumneavoastră depinde de ele, scriptul poate/va eșua pe site-urile care optimizează performanța - de exemplu, dacă scripturile sunt combinate într-un singur script pentru a accelera încărcarea, sau dacă sunt amânate sau minimizate (depinde de minimizare, dar ordinea se poate schimba). Dacă nu ați spus WordPress că scriptul dumneavoastră depinde de alte scripturi, nu puteți garanta ordinea în care acestea se vor încărca.

Dave Hilditch Dave Hilditch
10 mai 2017 14:19:46