Jadi saya terus mengalami masalah ini dan saya hanya mencari solusi terbaik dan paling sederhana untuk menyelesaikan masalah ini.
Saya datang untuk menggunakan jenis posting khusus di banyak proyek yang berbeda dan telah memperpanjang ini dengan metabox khusus yang kemudian saya lanjutkan dengan menambahkan skrip khusus seperti pemilih kalender acara jQuery ... Semua ini berfungsi dengan baik kecuali untuk satu masalah utama ... Saya tidak ingin skrip jQuery kustom ini dimuat di setiap halaman di admin.
Saya pada dasarnya hanya mencari cara untuk memiliki bidang jquery khusus ini dimuat ketika saya pada halaman "edit posting" untuk jenis posting SPESIFIK.
Apa solusi terbaik di sini?
PEMBARUAN 1
Pertama-tama, terima kasih banyak.
Saya benar-benar terkejut bahwa pengembang plugin tidak memastikan hal-hal seperti ini karena ketika saya mencari tahu ini adalah salah satu alasan utama bahwa ada masalah dengan plugin yang berbeda.
Saya memiliki beberapa masalah lebih lanjut dengan ini. Sebagai contoh...
Saya telah memodifikasi skrip untuk memanggil pernyataan if seperti ini:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Seperti yang Anda lihat, saya mencoba mengatur semuanya sehingga skrip saya HANYA dipanggil ketika saya menambahkan atau mengedit posting dalam jenis posting "peristiwa".
Saya tidak ingin skrip dimuat pada halaman lain dan juga tidak ingin skrip berjalan pada daftar halaman dalam jenis tulisan "peristiwa" jadi saya akan berpikir pernyataan if benar.
Namun masalahnya tampaknya skrip hanya dimuat ketika saya membuat posting baru dalam jenis posting ini tetapi tampaknya tidak berfungsi ketika saya mengedit posting yang sudah ada.
Bisakah Anda menguji ini dan mungkin memberi tahu saya apa yang bisa saya lakukan salah?
Berikut adalah kode persis yang saya gunakan ... mungkin ada cara yang lebih baik atau sederhana untuk melakukan ini?
<?php
// INCLUDE METABOX CUSTOM JQUERY DATEPICKER 2
add_action('admin_init','load_admin_datapicker_script');
function load_admin_datapicker_script() {
global $pagenow, $typenow;
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events') {
$ss_url = get_bloginfo('stylesheet_directory');
wp_enqueue_script('jquery');
wp_enqueue_script('custom_js_jquery_ui',"{$ss_url}/admin-metabox/js/jquery-ui-1.7.1.custom.min.js",array('jquery'));
wp_enqueue_script('custom_js_daterangepicker',"{$ss_url}/admin-metabox/js/daterangepicker.jQuery.js",array('jquery'));
wp_enqueue_script('custom_js_custom',"{$ss_url}/admin-metabox/js/custom.js",array('jquery'),NULL,TRUE);
wp_enqueue_style('custom_css_daterangepicker',"{$ss_url}/admin-metabox/css/ui.daterangepicker.css");
wp_enqueue_style('custom_css_jquery_ui',"{$ss_url}/admin-metabox/css/redmond/jquery-ui-1.7.1.custom.css");
}
}
Juga ... jika saya ingin menambahkan tiga jenis posting dan memuat skrip JS yang berbeda untuk setiap jenis posting maka apakah saya akan menduplikasi kode di atas tiga kali terpisah atau apakah ini bukan cara yang baik untuk melakukan ini? Misalnya ... apakah lebih baik menelepon: global $ pagenow, $ typenow; Di bagian atas file fungsi saya atau apakah itu penting atau menyulitkan ketika saya menduplikasinya lebih dari sekali?
Pada masalah yang berbeda terkait dengan hal yang sama ... Saya misalnya menggunakan plugin "gayaberkas" tetapi saya perhatikan skrip mereka berjalan pada setiap halaman di admin yang menyebabkan masalah dengan plugin lain. Bagaimana saya akan memodifikasi skrip mereka untuk memastikan skrip hanya dimuat ketika saya membutuhkannya.
PEMBARUAN 2
Saya telah memodifikasi file functions.php saya dengan kode yang disediakan oleh Mike (di bawah) namun tampaknya javascript yang berlaku masih disertakan ketika Anda membuat Posting atau Halaman BARU. Ini berarti bahwa ketika Anda mencoba untuk membuat Posting atau Halaman BARU baik dengan membuat posting / halaman wordpress default baru atau ketika Anda membuat posting / halaman BARU berdasarkan salah satu jenis posting kustom Anda. Kode yang diusulkan oleh Mike IS bekerja pada semua halaman admin lainnya dan TIDAK AKAN berfungsi ketika Anda "MENGEDIT" pos yang ada / halaman atau jenis pos kustom. Adakah modifikasi yang disarankan untuk membuat pekerjaan ini benar?
Ini kode saya saat ini:
<?php
add_action('admin_init','load_admin_datapicker_script');
function load_admin_datapicker_script() {
global $pagenow, $typenow;
if (empty($typenow) && !empty($_GET['post'])) {
$post = get_post($_GET['post']);
$typenow = $post->post_type;
}
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events') {
$ss_url = get_bloginfo('stylesheet_directory');
wp_enqueue_script('jquery');
wp_enqueue_script('custom_js_jquery_ui',"{$ss_url}/admin-metabox/js/jquery-ui-1.7.1.custom.min.js",array('jquery'));
wp_enqueue_script('custom_js_daterangepicker',"{$ss_url}/admin-metabox/js/daterangepicker.jQuery.js",array('jquery'));
wp_enqueue_script('custom_js_custom',"{$ss_url}/admin-metabox/js/custom.js",array('jquery'),NULL,TRUE);
wp_enqueue_style('custom_css_daterangepicker',"{$ss_url}/admin-metabox/css/ui.daterangepicker.css");
wp_enqueue_style('custom_css_jquery_ui',"{$ss_url}/admin-metabox/css/redmond/jquery-ui-1.7.1.custom.css");
}
}
?>