Dalam urutan apa WordPress memuat file plugin?


Jawaban:


26

Jawab pertanyaan pertama:

  1. Di wp-settings.php, WordPress pertama memeriksa setiap plugin yang harus digunakan (plugins di mu-pluginsfolder opsional ) dan memuatnya.

  2. Kemudian, jika Anda menjalankan instalasi multisite, ia memeriksa plugin yang diaktifkan jaringan dan memuatnya.

  3. Kemudian memeriksa semua plugin aktif lainnya dengan melihat active_pluginsentri wp_optionstabel database, dan meng-loop melalui itu. Plugin akan didaftar berdasarkan abjad.

Inilah urutan WordPress memuat hampir semuanya: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request

Masalahnya, biasanya tidak masalah urutan masing-masing plugin mana yang dimuat, karena plugin yang ditulis dengan benar akan menggunakan kait WordPress, yang memungkinkan Anda menghubungkan fungsionalitas ke poin tertentu nanti di startup WordPress. (Plugin yang ditulis dengan benar juga akan mengawali fungsi dan kelasnya sehingga tidak ada konflik.)

Info lebih lanjut tentang API plugin: http://codex.wordpress.org/Plugin_API/

Jawab pertanyaan kedua:

Sangat tergantung pada plugin. WordPress hanya memuat satu file dalam plugin, yang biasanya dinamai the-plugin-name.phpdan berisi judul, deskripsi, penulis, dll. Di bagian atas. Terserah plugin untuk memuat sisa file, menggunakan require_oncedan wp_enqueue_scriptdan yang lainnya.


Jadi jika saya membuat plugin, kemudian lepaskan plugin add-on yang seharusnya dijalankan setelah plugin asli dijalankan, bagaimana saya bisa memastikan pesanan itu?
urok93

Itu benar-benar tergantung apa yang Anda coba lakukan. Tetapi secara umum Anda akan mengatur masing-masing untuk berjalan pada hook tertentu menggunakan fungsi add_action (), yang memungkinkan Anda untuk mengatur prioritas. codex.wordpress.org/Function_Reference/add_action
SeventhSteel

@ SeventhSteel Tapi bagaimana jika sebuah plugin bergantung pada hook yang dibuat oleh plugin lain. Jika satu plugin digunakan apply_filters()untuk membuat hook, tetapi berjalan sebelum plugin yang digunakan add_filter(), maka apakah itu akan tetap berfungsi? Logikanya, sepertinya apply_filters()sudah dipecat, jadi add_filter()panggilan di plugin kedua tidak akan melakukan apa-apa. Apakah penting urutan apa yang dimuat plugin saat hanya menggunakan pengait yang dibuat plugin?
trusktr

Yang penting adalah apa yang dimuat oleh waktu apply_filters()berjalan. add_filter()harus berjalan sebelumnya apply_filters(). Jika add_filter()ada dalam file plugin dan tidak dalam fungsi lain, itu akan berjalan pada plugins_loadedhook yang umumnya akan terjadi sebelum Anda butuhkan apply_filters().
SeventhSteel

Skenario yang umum terjadi setelah beberapa plugin menambahkan konten mereka the_content- bagaimana urutan penampilannya ditentukan?
Dan Knauss

9

Saya merasa perlu untuk memasukkan tindakan 'keterlambatan memuat' dalam plugin saya yang berjalan setelah semua plugin menyelesaikan bebannya seperti ini:

add_action('plugins_loaded', 'my_late_loader');

Fungsi my_late_loader kemudian diinisiasi setelah semua plugin lain yang memungkinkan saya untuk menggunakan kait yang ditentukan oleh plugin lain dalam fungsi saya sendiri my_other_function yang diinisiasi di dalam my_late_loader

/**
 * 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);
}

Sedikit berbelit-belit (saya tahu), tetapi ini memastikan bahwa pengait di plugin lain dibuat sebelum ditambahkan terlepas dari urutan pemuatan plugin.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.