ดังนั้นฉันจึงพบปัญหานี้ต่อไปและฉันกำลังมองหาวิธีที่ดีที่สุดและง่ายที่สุดในการแก้ปัญหานี้
ฉันได้ใช้ประโยชน์จากประเภทโพสต์ที่กำหนดเองในโครงการที่แตกต่างกันและได้ขยายสิ่งเหล่านี้ด้วย metaboxes ที่กำหนดเองซึ่งฉันได้ขยายเพิ่มเติมโดยการเพิ่มสคริปต์ที่กำหนดเองเช่นตัวเลือกปฏิทินกิจกรรม jQuery ... ทั้งหมดนี้ใช้งานได้ดี ... ฉันไม่ต้องการให้สคริปต์ jQuery แบบกำหนดเองเหล่านี้โหลดได้ทุกหน้าในผู้ดูแลระบบ
ฉันกำลังมองหาวิธีเพียงแค่โหลด jQuery ที่กำหนดเองเหล่านี้เมื่อฉันอยู่ในหน้า "แก้ไขโพสต์" สำหรับประเภทโพสต์เฉพาะ
ทางออกที่ดีที่สุดที่นี่คืออะไร
อัพเดท 1
ก่อนอื่นขอบคุณมาก
ฉันตกใจจริง ๆ ที่ผู้พัฒนาปลั๊กอินไม่แน่ใจในสิ่งนี้เพราะฉันรู้ว่านี่เป็นหนึ่งในเหตุผลสำคัญที่ทำให้เกิดปัญหากับปลั๊กอินที่แตกต่างกัน
ฉันกำลังมีปัญหาเพิ่มเติมเกี่ยวกับเรื่องนี้ ตัวอย่างเช่น...
ฉันได้ปรับเปลี่ยนสคริปต์เพื่อเรียกใช้คำสั่ง if เช่นนี้:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
อย่างที่คุณเห็นฉันกำลังพยายามตั้งค่าต่างๆเพื่อให้สคริปต์ของฉันถูกเรียกเมื่อฉันเพิ่มหรือแก้ไขโพสต์ในประเภท "โพสต์" ของโพสต์
ฉันไม่ต้องการให้สคริปต์โหลดบนหน้าอื่นและไม่ต้องการให้เรียกใช้ในรายการหน้าในประเภทโพสต์ของ "กิจกรรม" ดังนั้นฉันคิดว่าคำสั่ง if นั้นถูกต้อง
ปัญหาดูเหมือนว่าสคริปต์จะโหลดเมื่อฉันสร้างโพสต์ใหม่ในประเภทโพสต์นี้ แต่ดูเหมือนจะไม่ทำงานเมื่อฉันแก้ไขโพสต์ที่มีอยู่
คุณลองทดสอบดูสิและอาจแจ้งให้ฉันทราบว่าฉันทำผิดอะไรได้บ้าง?
นี่คือรหัสที่แน่นอนที่ฉันใช้ ... อาจจะมีวิธีที่ดีกว่าหรือง่ายกว่าในการทำเช่นนี้?
<?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");
}
}
นอกจากนี้ ... หากฉันต้องการเพิ่มประเภทโพสต์สามประเภทและโหลดสคริปต์ JS ที่แตกต่างกันสำหรับโพสต์แต่ละประเภทฉันจะทำซ้ำรหัสด้านบนสามครั้งแยกกันหรือไม่นี่เป็นวิธีที่ดีในการทำเช่นนี้หรือไม่ ตัวอย่างเช่น ... จะเป็นการดีกว่าถ้าจะโทร: global $ pagenow, $ typenow; ที่ด้านบนของไฟล์ฟังก์ชั่นของฉันหรือมันมีความสำคัญหรือซับซ้อนกว่าเมื่อฉันทำซ้ำมากกว่าหนึ่งครั้ง?
ในปัญหาที่แตกต่างกันที่เกี่ยวข้องกับสิ่งเดียวกัน ... ฉันยกตัวอย่างเช่นการใช้ปลั๊กอิน "แรงโน้มถ่วงแบบฟอร์ม" แต่ฉันสังเกตเห็นว่าสคริปต์ของพวกเขาทำงานบนทุกหน้าของผู้ดูแลระบบซึ่งทำให้เกิดปัญหากับปลั๊กอินอื่น ๆ ฉันจะแก้ไขสคริปต์อย่างไรเพื่อให้แน่ใจว่าโหลดสคริปต์ได้เฉพาะเมื่อต้องการเท่านั้น
อัพเดท 2
ฉันแก้ไขไฟล์ functions.php ของฉันด้วยรหัสที่ Mike จัดเตรียมไว้ให้ แต่ดูเหมือนว่าจาวาสคริปต์ที่ใช้งานได้จะยังคงถูกรวมอยู่เมื่อคุณสร้างโพสต์ใหม่หรือหน้า ซึ่งหมายความว่าเมื่อคุณพยายามสร้างโพสต์ใหม่หรือเพจโดยสร้างโพสต์ / เพจเริ่มต้นใหม่หรือเมื่อคุณสร้างโพสต์ / หน้าใหม่โดยใช้ประเภทโพสต์ที่กำหนดเองของคุณ รหัสที่เสนอโดย Mike IS ทำงานบนหน้าผู้ดูแลระบบอื่น ๆ ทั้งหมดและจะทำงานเมื่อคุณ "แก้ไข" โพสต์ / เพจหรือโพสต์ที่กำหนดเองที่มีอยู่ การดัดแปลงที่แนะนำเพื่อให้งานนี้ถูกต้อง?
นี่คือรหัสปัจจุบันของฉัน:
<?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");
}
}
?>