Nasıl wordpress üzerinde jquery-ui etkileri doğru şekilde dahil edilir


25

Wordpress temamda jquery ui efektlerini (daha özel olarak shake efektini) eklemeye çalışıyorum. Şimdiye kadar sadece jQuery komut dosyasını ekleyebildim, ancak kullanıcı arabirimi komut dosyalarını nereye yerleştireceğiniz ve onları nasıl sıkıştıracağınıza dair hiçbir fikrim yok.

Bu benim kodum. Açıkçası çalışmıyor:

    <?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>

Yardımın için teşekkürler!


5
Bir not: jquery'yi sıkmanız gerekmemelidir, çünkü zaten jquery-ui-core bağımlılığı olarak listelenmiştir.
goldenapples

Yanıtlar:


36

WordPress, jQuery UI kitaplıklarını içermesine rağmen, UI / Effects kitaplığını içermez. Bu kütüphane ayrı ve bağımsızdır. Effects.core.js dosyasının bir kopyasını eklemeniz ve ayrı bir şekilde sıkıştırmanız gerekir.

Tutarlılığı adlandırmak için, kuyruğa alırken jquery-effects-core olarak adlandırmanız gerektiğini unutmayın.

Bu şekilde ekleyebilirsiniz:

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

Düzenleme : Bu cevap şimdi çekirdeğin bir parçası olarak çeşitli efekt kütüphanelerini içeren WordPress 3.3'ten önce yazılmıştır. Şimdi kullanmanız gereken efekt kütüphanesinin parçalarını basitçe ekleyebilirsiniz.

Bu dosyalar için sümüklü böceklerin listesi wp-include / script-loader.php içinde bulunabilir, ancak çekirdeğin sümüklü böcek jquery-effects-core şeklindedir.

wp_enqueue_script("jquery-effects-core");

1
Gerçek bir etki için (kör, zıplama, solma, ..) bu etkiyi açıkça vurgulamanız gerektiğinin farkında olun. 'Solmaya' gibi:wp_enqueue_script( 'jquery-effects-fade' );
SunnyRed

Kullanıcı kendi Javascript'ini ayrı bir dosyaya yerleştirmeli ve daha sonra bu dosyayı sıkıştırarak ihtiyaç duyduğu bağımlılıkları listelemelidir. Bu şekilde, WordPress (ve performans eklentileri) bu komut dosyalarını yüklemek için gereken sırayı bilir ve bunları sayfaya doğru sırada yerleştirir.
Dave Hilditch

8

, @dabito

Komut dosyalarınızı doğru yüklemiyorsunuz ... wp_enqueue_script()Tema şablonu dosyanızın içinde arama (bu gibi görünüyor header.php). Bu işlevi ayrı bir kancadan çağırmanız gerekir.

Temanızın functions.phpdosyasına aşağıdaki kodu yerleştirin:

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

Her iki komut dosyası da doğru bir şekilde kaydedilmişse, bunlar düzgün bir şekilde yüklenmelidir ( <script />başlığa uygun etiketleri ekleyerek .

Nesnelerin yönetici tarafına komut dosyaları eklemek istiyorsanız, admin_enqueue_scriptsbunun yerine eyleminizi ekleyin .


1
Tam olarak doğru değil. Onları wp_head () çağrısından önce çağırdığı sürece, bu iyi sonuç vermeli. Bağlanmak zorunda değiller ve yine de başlamak için bağlanmış olmaları gerekmiyor. Onları bir yere bağlayacaksanız, 'wp_enqueue_scripts' eylem kancasına bağlayın. Bunun için orada.
Otto

1
@Otto Söyledikleriniz mantıklı geliyor. Fakat neden kodeksinde @EAMann'ın yazdığı - "Bu işlevi çağırmak için init eylemini kullanın" yazdığının bir açıklaması var mı? Ve onun örneği oradan alınmıştır ... codex.wordpress.org/Function_Reference/wp_enqueue_script
Lea Cohen

Kodeks yerlerinde tehlikelidir. Bunun için kullanılacak en iyi eylem, ön uç için 'wp_enqueue_scripts' veya arka uçtaki 'admin_enqueue_scripts' şeklindedir. Init'e bağlanmak işe yarayacak, ancak betiği sitenin tamamında zorlayacak.
Otto

Kod snippet'imi buna göre güncelleştirdim. Başlangıçta Codex referansını temel alan hızlı ve içten bir reaksiyondu ... wp_enqueue_scriptskullanımı kesinlikle daha iyi bir yöntemdi ve fazladan bir is_admin()kontrol gerektirmiyordu .
EAMann

Bu da yanlış yol - performans eklentilerinin bağımlılıkları bilmesi gerekiyor. Yazar, kendi .js dosyasını yazmalı ve bunu bağımlı hale getirmeli ve bağımlılıkları isimlendirmelidir - WordPress geri kalanı halledecektir.
Dave Hilditch

7

Ayrıca tüm jQuery UI’yi doğrudan Google’dan da ekleyebilirsiniz. Bu nasıl yaparım:

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

Ve jQuery, jQuery UI için bir bağımlılık olarak listelendiğinden, elle sıkmanız gerekmez. WordPress sizin için otomatik olarak yapacak.



Yabancı kaynaklardan komut dosyası yüklemek konusunda çok cesaretliyim. Bunu çok uzun zamandır yaptım ve (nadiren) sunucunun kapalı olduğu için oldu, bu yüzden birden fazla müşterinin sayfalarıyla aynı anda sorunları vardı.
Julian F. Weinert

1
@ JulianF.Weinert, çift kenarlı bir kılıçtır, iyi bir cdn ile düşük gecikme süresi ancak başarısız olursa kontrol eksikliği anlamına gelir. Bununla birlikte, eğer Google cdn yarıya inerse İnternet başarısız olacaktır, bu yüzden sizinki tek olmayacaktır. Bir kullanıcı tarayıcısında aşağı ve önbellekte saklanma olasılığı çok düşük. Bir cdn kullanmak çoğu durumda için bir avantajdır.
Alex,

Doğru. Tam olarak bu kullanım için tasarlandığından, elbette burada kesinlikle iyi olacak tam bir CDN'den bahsetmedim. Herhangi bir john-doe.com sitesinden script yüklemek biraz zor olsa da, sanırım
Julian F. Weinert

3

Bu jQuery kütüphanesi için varsayılan bir yükleme görünmüyor ( burada tam liste ), bu yüzden muhtemelen onu kodlamadan önce betiği kaydetmeniz gerekecek .


1
Haklı olabileceğinizi düşündüm (bazen WP kayıt dosyalarının altındaki isimler kullanılan standart adlardan farklıdır) ancak bu durumda 'jquery-ui-core' kaydının yapılması gerekir. Onun listelenen core.trac.wordpress.org/browser/branches/3.0/wp-includes/...
goldenapples

İyi bir nokta! Sadece o jQuery kütüphanesini yüklemek istediğini sanmıştım, bu durumda gerisini yüklemek biraz kabalık olurdu.
editör

3

Sadece küçük bir ipucu. Komut dosyanızı sıkıştığınızda, yönetici paneli de dahil olmak üzere tüm site için geçerlidir. Komut dosyasını yönetici panelinde istemiyorsanız, bunları yalnızca sitenin sonuna ekleyin.

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

add_action( 'wp_enqueue_scripts', 'my_add_frontend_scripts');

4
Sıkma yapmak için iç kancayı kullanmamalısınız. Yalnızca ön uç için wp_enqueue_scripts kancasını veya arka uç için admin_enqueue_scripts kancasını kullanın.
Otto,

wp_enqueue_scriptsEylemin sadece ön taraf için olduğunu bilmiyordum . Thanks :)
Tareq

0

Buradaki tüm cevaplar, çalışırken, teknik olarak yanlıştır.

Jquery-ui'yi ve diğer kitaplıkları dahil etmenin doğru yolu, onları kendi komut dosyanızın bağımlılıkları olarak eklemektir .

Bu önemlidir, çünkü performans araçları, sitenizi optimize etmek için komut dosyalarınızın yükleme sırasını değiştirmek için bu bağımlılıkları kontrol edebilir.

Bu nedenle, eğer jquery ve jquery-ui'yi kullanmak istiyorsanız, kendi .js script dosyanızı oluşturun ve bağımlılıkları listelenen şekilde bu şekilde sıkın - kullandığınız her kitaplık için ayrı bir enqueue komutuna gerek yok:

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

Bağımlılıklar olarak eklemek için mevcut tüm komut dosyalarının bir listesini burada bulabilirsiniz: https://developer.wordpress.org/reference/functions/wp_enqueue_script/


1
Haklısın. Kendi wp_enqueue_script çağrılarınızdaki bağımlılıkları kullanmak, jquery / jquery-ui / etc'yi dahil etmenin doğru yoludur. Onları ayrı ayrı sıralamaya gerek yok.
Michae Pavlos Michael,

Ayrıca, betiğiniz onlara bağlı olduğunda bunları ayrı ayrı sıkıştırırsanız, betiğiniz performansı optimize etmek için komut dosyaları tek bir komut dosyası içinde birleştirilirse veya ertelenir veya küçültülürse (küçültmeye bağlı sipariş değişebilir). WordPress'e komut dosyanızın diğer komut dosyalarına bağlı olduğunu söylemediyseniz, yüklenecekleri sırayı garanti edemezsiniz.
Dave Hilditch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.