WordPress eklenti dosyalarını hangi sırada yükler?


Yanıtlar:


26

İlk sorunun cevabı:

  1. İçinde wp-settings.php, WordPress ilk olarak kullanılması gereken eklentileri (isteğe bağlı mu-pluginsklasördeki eklentiler ) kontrol eder ve yükler.

  2. Daha sonra, çok bölgeli bir kurulum çalıştırıyorsanız, ağda etkinleştirilen eklentileri kontrol eder ve bunları yükler.

  3. Daha sonra veritabanı tablosunun active_pluginsgirişine bakarak diğer tüm aktif eklentileri kontrol eder wp_optionsve bunlara göz atar. Eklentiler alfabetik olarak listelenecektir.

WordPress'in hemen hemen her şeyi yüklediği sıra: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request

Mesele şu ki, her bir eklentinin hangi sırayla yüklendiği önemli değildir, çünkü düzgün yazılmış eklentiler WordPress başlangıcında daha sonra belirli noktalara işlevselliği bağlamanızı sağlayan WordPress kancalarını kullanır. (Düzgün yazılmış eklentiler işlevlerine ve sınıflarına önek ekler, böylece çakışma olmaz.)

Eklenti API'sı hakkında daha fazla bilgi: http://codex.wordpress.org/Plugin_API/

İkinci sorunun cevabı:

Tamamen eklentiye bağlıdır. WordPress eklentiye sadece bir dosya yükler, genellikle adlandırılmış the-plugin-name.phpve üstte başlık, açıklama, yazar vb. Bu kullanarak, kendi dosyaları geri kalanını yüklemek için eklenti kalmış require_onceve wp_enqueue_scriptetajer.


Bir eklenti oluşturursam, daha sonra orijinal eklenti çalıştırıldıktan sonra çalıştırılması gereken bir eklenti eklentilerini serbest bırakırsam, bu siparişi nasıl sağlayabilirim?
urok93

Gerçekten ne yapmaya çalıştığınıza bağlı. Ancak genellikle her birini, öncelik ayarlamanıza izin veren add_action () işlevini kullanarak belirli bir kancada çalışacak şekilde ayarlarsınız. codex.wordpress.org/Function_Reference/add_action
SeventhSteel

@SeventhSteel Ama bir eklenti başka bir eklenti tarafından oluşturulan kancaya dayanırsa. Bir eklenti apply_filters()bir kanca oluşturmak için kullanıyor ancak kullanılan bir eklentiden önce çalışıyorsa add_filter(), yine de çalışır mı? Mantıksal olarak, apply_filters()zaten tetiklenmiş gibi görünüyor , bu nedenle add_filter()ikinci eklentideki aramalar hiçbir şey yapmayacak. Yalnızca eklenti tarafından oluşturulan kancalar kullanılırken eklentilerin hangi sırada yüklendiği önemli midir?
trusktr

Önemli olan zamanın yüklediği şeydir apply_filters(). add_filter()önce çalıştırılmalıdır apply_filters(). Eğer add_filter()bir eklenti dosyasında değil, başka işlevi, bu çalışacağını plugins_loadedgenellikle ihtiyacım olacağını daha önce ne olacak kanca apply_filters().
SeventhSteel

Yaygın bir senaryoda, içeriklerini sonra ekleyen birkaç eklenti olması the_content- görünümlerinin sırası nasıl belirlenir?
Dan Knauss

9

Eklentilerime tüm eklentiler bu şekilde yüklendikten sonra çalışan bir 'geç yükleme' eylemi eklemenin yararlı olduğunu düşünüyorum:

add_action('plugins_loaded', 'my_late_loader');

My_late_loader işlevi, diğer tüm eklentilerden sonra başlatılır, bu da benim diğer işlevler tarafından tanımlanan kancaları kendi işlevimde my_late_loader içinde başlatılan my_other_function kullanmamı sağlar.

/**
 * Late loading function for actions that must run after all plugins 
 * have loaded
 */
function my_late_loader(){
    add_action( 'some_hook', 'my_other_function', 10, 1);
}

Bit kıvrık (biliyorum), ancak bu, eklenti yükleme sırasından bağımsız olarak eklenmeden önce diğer eklentilerin kancalarının oluşturulmasını sağlar.

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.