Di wp-settings.php, WordPress pertama memeriksa setiap plugin yang harus digunakan (plugins di mu-pluginsfolder opsional ) dan memuatnya.
Kemudian, jika Anda menjalankan instalasi multisite, ia memeriksa plugin yang diaktifkan jaringan dan memuatnya.
Kemudian memeriksa semua plugin aktif lainnya dengan melihat active_pluginsentri wp_optionstabel database, dan meng-loop melalui itu. Plugin akan didaftar berdasarkan abjad.
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.)
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.
Jawaban:
Jawab pertanyaan pertama:
Di
wp-settings.php
, WordPress pertama memeriksa setiap plugin yang harus digunakan (plugins dimu-plugins
folder opsional ) dan memuatnya.Kemudian, jika Anda menjalankan instalasi multisite, ia memeriksa plugin yang diaktifkan jaringan dan memuatnya.
Kemudian memeriksa semua plugin aktif lainnya dengan melihat
active_plugins
entriwp_options
tabel 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.php
dan berisi judul, deskripsi, penulis, dll. Di bagian atas. Terserah plugin untuk memuat sisa file, menggunakanrequire_once
danwp_enqueue_script
dan yang lainnya.sumber
apply_filters()
untuk membuat hook, tetapi berjalan sebelum plugin yang digunakanadd_filter()
, maka apakah itu akan tetap berfungsi? Logikanya, sepertinyaapply_filters()
sudah dipecat, jadiadd_filter()
panggilan di plugin kedua tidak akan melakukan apa-apa. Apakah penting urutan apa yang dimuat plugin saat hanya menggunakan pengait yang dibuat plugin?apply_filters()
berjalan.add_filter()
harus berjalan sebelumnyaapply_filters()
. Jikaadd_filter()
ada dalam file plugin dan tidak dalam fungsi lain, itu akan berjalan padaplugins_loaded
hook yang umumnya akan terjadi sebelum Anda butuhkanapply_filters()
.the_content
- bagaimana urutan penampilannya ditentukan?Saya merasa perlu untuk memasukkan tindakan 'keterlambatan memuat' dalam plugin saya yang berjalan setelah semua plugin menyelesaikan bebannya seperti ini:
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
Sedikit berbelit-belit (saya tahu), tetapi ini memastikan bahwa pengait di plugin lain dibuat sebelum ditambahkan terlepas dari urutan pemuatan plugin.
sumber