Saya memiliki dua fungsi sederhana yang memuat barang menggunakan wp_enqueue_style()
dan wp_enqueue_script()
, sesuatu seperti ini:
function admin_custom_css()
{ wp_enqueue_style( 'stylesheet_name', 'stylesheet.css') };
function admin_custom_js
{ wp_enqueue_script( 'javascript_file', 'script.js') };
... dan beberapa halaman admin, dibuat dengan add_menu_page()
danadd_submenu_page()
function my_menu() {
add_menu_page('Page 1', 'bar', 'something', 'else', 'foo');
add_submenu_page( 'theme_menu', 'Subpage 1', 'Subpage', 'something', 'else', 'foo');
}
add_action('admin_menu', 'my_menu');
Bagaimana cara memuat dua fungsi saya hanya di halaman ini?
Saat ini saya sedang menggunakan:
add_action('admin_init', 'admin_custom_css' );
add_action('admin_init', 'admin_custom_js' );
Tapi itu memuat file saya di setiap halaman admin, yang tidak bagus sama sekali.
Dapatkah saya melakukan ini melalui satu baris sederhana di functions.php
atau harus membuat mereka di dalam halaman saya secara terpisah (saya lebih suka opsi pertama, karena saya harus mengedit banyak fungsi admin-halaman-membuat).
Terima kasih!
wp-admin
wp-enqueue-script
admin-menu
wp-enqueue-style
admin-init
Wordpressor
sumber
sumber
Jawaban:
add_menu_page
danadd_submenu_page
keduanya mengembalikan "suffix" halaman, yang dapat digunakan untuk mengidentifikasi halaman dengan kait tertentu. Dengan demikian, Anda dapat menggunakan suffix tersebut dalam kombinasi dengan kait variabeladmin_print_styles-{$hook_suffix}
danadmin_print_scripts-{$hook_suffix}
untuk secara khusus menargetkan halaman-halaman ini.Saya menemukan ini sebagai metode bersih untuk menambahkan semua ini karena semuanya ditangani dalam satu fungsi. Jika Anda memutuskan untuk menghapus fungsi ini, cukup hapus panggilan ke satu fungsi.
sumber
admin_print_scripts()
negara-negara "admin_print_scripts
tidak boleh digunakan untuk gaya enqueue atau script ." Jawaban oleh @TomAuger sebenarnya adalah jawaban yang benar, meskipun tidak optimal. Akan bermanfaat jika tim WP menambahkanadmin_enqueue_scripts-(hookname)
pengait ...Masalah dengan jawaban @tollmanz adalah karena Anda menggunakan kait -print-style dan -print-scripts, Anda harus membuat HTML untuk memuat skrip Anda secara manual. Ini tidak optimal, karena Anda tidak mendapatkan dependensi dan versi bagus yang menyertai
wp_enqueue_script()
danwp_enqueue_style()
. Itu juga tidak membiarkan Anda meletakkan sesuatu di footer jika itu tempat yang lebih baik bagi mereka.Jadi, kembali ke pertanyaan OP: apa cara terbaik untuk memastikan bahwa saya dapat mengirim JS / CSS pada halaman admin tertentu saja?
Menghilangkan aksi "load - {$ my_admin_page}" untuk hanya melakukan hal-hal ketika halaman admin plugin spesifik Anda yang dimuat, dan kemudian
Lepaskan tindakan "admin_enqueue_scripts" untuk menambahkan
wp_enqueue_script
panggilan dengan benar.Sepertinya sedikit sakit, tetapi sebenarnya sangat mudah diterapkan. Dari atas:
sumber
load-$hook
hook yang mengaktifkanoption_page_actions
fungsi saya yang mana saya dapat menambahkan banyak hook / filter lain dll. Karena tindakan tersebut hanya dipanggil pada halaman pilihan, hook di luar titik itu tidak perlu menggunakan kait namespace (seperti yang telah Anda tunjukkan), yang jauh lebih efisien & intuitif.Jika Anda menggunakan
get_current_screen()
, Anda dapat mendeteksi halaman apa yang sedang Anda kunjungi. Ada contoh dalam artikel naskah kuno yang saya terkait yang menunjukkan bagaimana menggunakanget_current_screen()
denganadd_options_page()
, metode ini akan bekerja untuk setiap halaman admin.sumber
Anda dapat mengambil jawaban , dan mengembangkannya sedikit, memungkinkan untuk penggunaan bersyarat juga ...
@tollmanz
Contoh:
sumber
Seperti @ mor7ifer yang disebutkan di atas, Anda dapat menggunakan fungsi WordPress asli get_current_screen () . Jika Anda mengulang-ulang output dari fungsi ini, misal:
... Anda akan melihat pangkalan yang disebut kunci . Saya menggunakan ini untuk mendeteksi halaman apa yang saya gunakan dan enqueue, seperti:
sumber
Saya bertanya-tanya hal yang sama. Ada versi modern yang menggunakan
admin_enqueue_scripts
:sumber
Dari dokumentasi :
Sama dengan
admin_print_styles
.sumber
sumber
Untuk membuatnya, Anda harus menemukan nama halaman admin terlebih dahulu. Tambahkan
admin_enqueue_scripts
denganwp_die($hook)
dan pergi ke halaman plugin spesifik Anda, Anda akan melihat nama halaman.Sekarang salin nama halaman dan gunakan dalam kondisi untuk memuat skrip pada halaman tertentu.
sumber