Saya perhatikan bahwa beberapa plugin seperti Contact-form-7 , Nextgen-gallery , mungkin yang lain, memiliki fitur anti-menarik yang tidak mendaftarkan kode pendek mereka ketika is_admin()
itu benar.
Masalahnya adalah, jika Anda ingin menghasilkan beberapa konten dinamis (yang mungkin memiliki kode pendek) dari ajax, dan menggunakan cara wp "benar" untuk melakukannya, admin-ajax.php, tidak mungkin WP_ADMIN tidak benar. Lihat baris pertama admin-ajax.php:
define( 'DOING_AJAX', true );
if ( ! defined( 'WP_ADMIN' ) ) {
define( 'WP_ADMIN', true );
}
Sekarang, tampaknya ada ekstensi PHP yang akan membiarkan Anda menghapus konstanta yang ditetapkan (hacky), atau mungkin ada cara untuk mengacaukan dengan sistem WP_Screen tidak berdokumen dan $GLOBALS['current_screen']
untuk membuat is_admin()
fungsi kembali palsu ?? Solusi yang paling dapat digunakan tampaknya adalah memposting ke halaman atau root situs.
Apakah umum bagi plugin untuk mendaftarkan kode pendeknya ketika is_admin()
itu salah? Jika demikian, saya tidak dapat menemukan dokumentasi atau alasan untuk itu selain itu mungkin merupakan optimasi prematur.
is_admin
apakah doing_it_wrong ada cara yang jauh lebih baik di WP untuk memeriksa permintaan ajax. Akhirnya, jika plugin enqueues js / css, jika itu melakukannya dengan baik (menggunakan'wp_enqueue_scripts'
tindakan) itu tidak akan mempengaruhi halaman admin karena kait itu tidak dipecat di halaman admin.the_content
panggilan dan panggilan admin-ajax.Sebenarnya, tidak ada alasan untuk tidak mendaftarkan kode pendek di admin.
Jika pembuat plugin ingin menonaktifkan bentuk plugin Ajax, mereka harus melakukannya
bukannya memeriksa adalah admin.
Perhatikan bahwa di masa mendatang, ada kemungkinan Shortcake akan tertanam di dalam inti karena itu adalah "Plugin Fitur".
Jika itu akan terjadi, shortcode tidak didefinisikan di admin tidak akan bekerja dengannya. Ini memberi Anda konfirmasi lain bahwa tidak ada alasan untuk tidak mendaftarkan kode pendek di admin: bahkan pengembang inti mengerjakan hal-hal yang memerlukan kode pendek yang tersedia di admin.
Yang mengatakan, Anda harus kemungkinan:
Mengenai # 2, sebenarnya ada perpustakaan yang dapat memaksa
is_admin
untuk menjadi kenyataan. Oleh mereka peretasan, dan saya tidak akan pernah menggunakannya dalam produksi.Contohnya adalah Patchwork .
Menggunakannya, Anda dapat mengganti fungsi kustom PHP.
Dalam plugin MU Anda dapat melakukan (sepenuhnya tidak TERLARANG):
Ini akan membuat
is_admin()
return false pada permintaan ajax.Namun, seperti yang dikatakan, ini cukup meretas, dan akan memengaruhi perilaku plugin (dan inti) lainnya dengan efek yang tidak dapat diprediksi.
Hal lain yang dapat Anda lakukan adalah mendaftar handler plugin kode pendek pada permintaan admin.
Misal jika kode plugin adalah:
maka Anda dapat menulis plugin lain yang berfungsi:
Dengan cara ini, kode pendek akan ditambahkan dalam kedua kasus.
Ini mungkin atau mungkin tidak bekerja sendiri tergantung pada kode plugin lain, tetapi tidak ada jawaban umum untuk ini.
sumber
add_shortcode('shortcode', array('their-class', 'their-function') )
atau serupa.