Bu yüzden bu sorunla karşılaşmaya devam ediyorum ve sadece bu sorunu çözmek için en iyi ve en basit çözümü arıyorum.
Birçok farklı projede özel yazı türlerinden faydalanmaya başladım ve bunları jQuery etkinlik takvimi seçicileri gibi özel komut dosyaları ekleyerek daha da genişlettiğim özel meta kutularla genişlettim ... Tüm bu önemli bir sorun dışında harika çalışıyor ... Bu özel jQuery komut dosyalarının yönetici içindeki her sayfaya yüklenmesini istemiyorum.
Ben sadece bir SPECIFIC yazı türü için "yazı düzenleme" sayfasında olduğumda sadece bu özel jquery alanları yüklü olması için bir yol arıyorum.
Buradaki en iyi çözüm nedir?
GÜNCELLEME 1
Her şeyden önce, çok teşekkür ederim.
Aslında eklenti geliştiricilerinin böyle şeylerden emin olmadıkları için şok oldum, çünkü bu farklı eklentilerle ilgili sorunların varlığının temel nedenlerinden biri.
Bununla ilgili başka sorunlar yaşıyorum. Örneğin...
Bu gibi if ifadesini çağırmak için komut dosyasını değiştirdim:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Gördüğünüz gibi bir şeyler ayarlamaya çalışıyorum, böylelikle komut dosyalarım SADECE "olaylar" yazı tipinde bir yazı eklerken veya düzenlerken çağrılıyor.
Ben komut dosyası başka bir sayfada yüklemek istemiyorum ve ayrıca "olaylar" yazı türü içinde sayfa listesinde çalıştırmak istemiyorum, bu yüzden if deyimi doğru olduğunu düşünürdüm.
Ancak sorun betiğin sadece bu yazı türünde yeni bir yazı oluşturduğumda yüklenmesi gibi görünüyor ancak mevcut bir yazı düzenlerken çalışmıyordu.
Bunu test edebilir ve neyi yanlış yapabileceğimi bana bildirir misiniz?
İşte kullanıyorum tam kodu ... belki de bunu yapmanın daha iyi veya basit bir yolu var mı?
<?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");
}
}
Ayrıca ... üç yazı tipi eklemek ve her yazı türleri için farklı JS komut dosyaları yüklemek istedim, o zaman sadece üç ayrı kez yukarıdaki kodu çoğaltır mıyım yoksa bu bunu yapmanın iyi bir yolu değil mi? Örneğin ... sadece şunu aramak daha iyi olur: global $ pagenow, $ typenow; İşlevlerimin üst kısmında veya birden fazla kez çoğalttığımda bir şey önemli mi yoksa karmaşık mı?
Aynı ile ilgili farklı bir sorun üzerinde ... Örneğin "yerçekimi formları" eklentisi kullanıyorum ama komut dosyalarını diğer eklentiler ile ilgili sorunlara neden yönetici her sayfada çalıştırmak fark ettim. Nasıl ben sadece onlara ihtiyacım olduğunda yüklenmesini sağlamak için onların komut dosyasını değiştirme hakkında gitmek istiyorum.
GÜNCELLEME 2
Benim fonksiyonları.php Mike (sağlanan) kodu ile değiştirdim ancak yeni bir yazı veya sayfa oluşturduğunuzda geçerli javascript hala dahil ediliyor gibi görünüyor. Bu, yeni bir varsayılan wordpress yazısı / sayfası oluşturarak yeni bir gönderi veya sayfa oluşturmaya çalıştığınızda veya özel gönderi türlerinizden birini temel alan yeni bir gönderi / sayfa oluşturduğunuz anlamına gelir. Mike tarafından önerilen kod diğer tüm yönetici sayfalarında çalışır ve mevcut bir yazı / sayfa veya özel yazı türünü "DÜZENLEME" yaptığınızda çalışır. Bu çalışmayı doğru yapmak için önerilen herhangi bir değişiklik var mı?
İşte benim geçerli kod:
<?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");
}
}
?>