Ne zaman wp_register_script () ile wp_enqueue_script () vs sadece wp_enqueue_script () kullanmalıyım?


54

Ne zaman kullanman gerektiğinin anlaşılmasında sorun yaşıyorum wp_register_script(). Şu anda sadece şöyle bir şey kullanıyorum:

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
    $handle = 'some-handle';
    $js = 'http://example.com/my.js';
    wp_register_script( $handle, $js );
    wp_enqueue_script( $handle );
}

Çok fazla okuma yaptım (Kodeks, bloglar, vb.), Ancak ilk önce ne zaman kayıt yaptırmam gerektiğini veya ne zaman ne zaman konuşmam gerektiğini tam olarak anlayamıyorum. Örnek olarak, TwentyTwelve'nin herhangi bir stil veya komut dosyası kaydetmediğini fark ettim , sadece onları zorlar.

Yanıtlar:


49

wp_register_script()Codex sayfa anlamıyla diyor ki:

Javascriptleri daha sonra kullanmak üzere WordPress'e kaydetmenin güvenli bir yolu wp_enqueue_script().

Bu, komut dosyalarınızı kaydetmek, ancak bunları doğrudan sayfalarınıza yüklemek istemiyorsanız, dosyaları bir kez kaydedebilir ve daha sonra ihtiyaç duyduğunuzda yükleyebilirsiniz.

Örneğin:

Bazı işlevler yükleyen bir switch deyiminiz var, ancak üç durumdan ikisinin belirli bir javascript dosyasına ihtiyacı var ve biri gerekli değil. Senaryoyu her seferinde, daha fazla kaynağa malolmak suretiyle ya da sadece ihtiyacın olduğunda senaryoyu zorlayabilirsin.

...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
    case 'value':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    case 'value2':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    default:
    case 'value3': // doesn't needs the file
        ...
    break;
}

Bir betiği kaydettirmek ve sonra onları zorlamak gerekmez, ancak kodunuzda functions.phpher yerde yerine, bir yerde ihtiyacınız olan tüm komut dosyalarını kaydederseniz kodunuzda bir mantık sağlayabilir .

Kodeks ayrıca şunları da söyler:

wp_enqueue_scriptsBu işlevi admin_enqueue_scriptsçağırmak veya yönetici tarafında çağırmak için eylemi kullanın .

Bu, betiğinizi ön uçta ve arka uçta sıkıştıracaksanız , bir betiği bir kez kaydedebilir ve ardından ön uçta wp_enqueue_scriptve arka uçta yükleyebilirsiniz admin_enqueue_script.
Bu şekilde aynı tema, bir tema, eklenti, widget ya da her neyse iki kez aynı kaynağa sahip olmayacaksınız.


Teşekkür ederim. Bu çok temizledi. Peki, TwentyTwelve'in kesin olarak yükleyeceği için ilk önce kayıt yaptırma zahmetine girmediğini düşünüyor musunuz?
Ocak'ta

Bu kesin bir olasılık olabilir. On yirmi On iki temanın nasıl oluşturulduğunu bilmiyorum çünkü hiç kullanmadığımdan eminim ama onların enqueueyerine kendi sebepleri olacak register.
Mike Madern,

2
Bu anlamda, "Senaryoyu her seferinde sıkıştırabilirsin, daha çok kaynak tutabilirsin, ya da ihtiyacın olduğunda sadece senaryoyu kullanabilirsin" ile aynı fikirde değilim. Örnek kodunuzda, register çağrısını kaldırabilir ve bunun yerine birden fazla eşdeğeri ($ src arg) çağrısına sahip olabilirsiniz wp_enqueue_style(). Bu sadece daha fazla yazma çabası olur, ancak daha büyük kaynak gereksinimlerine neden olmaz . Doğru?
Jan-Philip Gehrcke

7
Şimdiye kadar tüm açıklamalar tarafından bırakılan bir nokta, wp_register_script()sadece bir betiği kayıt etmek için kullanabilmenizdir , böylece diğer betikler için bir bağımlılık olarak kullanılabilir ve doğrudan doğrudan doldurulmadan onlarla yüklenebilir.
JHoffmann

1
Bu iyi açıklasa da, bu cevabı da okumanızı tavsiye ederim .
lowtechsun

8

IMHO kullanmanın ana avantajı wp_register_scriptdaha önce wp_enqueue_scriptsgelen aşağıdaki paragrafta gösterilmektedir Kodeksi :

Wp_register_script () kullanılarak önceden kaydedilmiş komut dosyalarının, sıkıştırılmış başka bir komut dosyasının bağımlılığı olarak listeleniyorsa, wp_enqueue_script () kullanılarak elle sıkıştırılması gerekmez. WordPress, kayıtlı betiğin işleyicisini bir bağımlılık olarak listeleyen sıkıştırılmış betiği içermeden önce otomatik olarak kayıtlı betiği içerecektir.

Buna ihtiyacınız olmadığına inanıyorsanız (örneğin, betiğinizin herhangi bir bağımlılığa dahil olmayacağından% 100 emin olduğunuz için) muhtemelen wp_enqueue_scriptsbir ön hazırlık olmadan doğrudan gidebilirsiniz wp_register_script.


2

Bazı makalelerden geçtim ve şu sonuca vardım. Bence yardımcı olur.

  1. Herhangi bir script kullanarak wp_register_script()kayıt sadece kayıt olmaktır; yüklenmiyor. Kayıtlı script kullanımı zorunlu hale getirilinceye kadar yüklenmeyecektir wp_enqueue_script().
  2. Her bir betiği aynı anda kaydetmemize ve sıkıştırmamıza gerek yok. Sadece konuşmalıyız. wp_enqueue_script()İşlev betiği otomatik olarak kaydettirdiğinden kayıt yapılması zorunlu değildir .
  3. Ancak, aşağıdaki durumlardan herhangi birindeyken kayıt olmamız gerekir:

    a. Ön uçta ve arka uçta bir defa gibi birden fazla yere yüklenecek bir komut dosyasına ihtiyacımız olduğunu varsayalım (yönetici sayfası). Şimdi senaryoyu sadece bir kez kaydedebiliriz. Ve sonra onu ön uçta ve arka uçta tek tek sıkın. Bak, sıkmak yükleme demek. Kayıt olmak, yükleme anlamına gelmez. Kayıt yaptırmamamız durumunda, talep ettiğimiz sayıda otomatik olarak kaydedilecektir. Öte yandan, bir kez kaydedersek, kaç kez istediğimiz önemli değil, bir kez kaydedilir.

    b. Bir komut dosyasını diğer komut dosyalarının bir bağımlılığı olarak kullanmak istiyorsak, onu zorlamak zorunda değiliz wp_enqueue_script(). Sadece kayıt olun wp_register_script(). Bu, tanıtıcı adını, diğer komut dosyalarına bağlı olarak kullandığımız zaman otomatik olarak doldurulur wp_enqueue_script().

    c. Komut dosyasının bir kerede yüklenmek yerine gerektiğinde yüklenmesini istiyorsak, daha sonra kullanmak üzere kaydedebiliriz. Kullanım durumu yukarıda gösterilmiştir.

Not: İkna olduğum sürece, aynı sonuç CSS stil sayfaları için çizilebilir. Bence kullanabileceği demek wp_register_style()ve wp_enqueue_style()aynı şekilde.

Burada çizilen sonucun kendi kesinti sonucumu yansıttığına dikkat edin. Eğer hatalıysam, lütfen beni düzelt. Ve daha farklı ve daha iyi bir sonuca varabilirdin. Eğer öyleyse, lütfen bize bildirin. Kim bilir? Belki de sizinki en iyisidir. Diyor ki, “Pek çok inanç, kurtuluş için birçok yol.” :)

https://sxbook.blogspot.com/2018/12/wpregisterscript-when-to-use.html


Açıklamanız okuduğum en iyisidir. Şimdi senaryoları kaydetmenin neden önemli olduğunu anladım. Teşekkür ederim!
Jee
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.