Vì vậy, tôi tiếp tục gặp vấn đề này và tôi chỉ tìm giải pháp tốt nhất và đơn giản nhất để giải quyết vấn đề này.
Tôi đã đến để sử dụng các loại bài đăng tùy chỉnh trong nhiều dự án khác nhau và đã mở rộng chúng bằng các metabox tùy chỉnh mà sau đó tôi đã mở rộng thêm bằng cách thêm các tập lệnh tùy chỉnh như bộ chọn lịch sự kiện jQuery ... Tất cả đều hoạt động tốt ngoại trừ một vấn đề chính ... Tôi không muốn các tập lệnh jQuery tùy chỉnh này tải trên mỗi trang trong quản trị viên.
Về cơ bản, tôi chỉ tìm cách để có các trường jquery tùy chỉnh này được tải khi tôi ở trang "chỉnh sửa bài đăng" cho loại bài đăng CỤ THỂ.
Giải pháp tốt nhất ở đây là gì?
CẬP NHẬT 1
Trước hết, cảm ơn bạn rất nhiều.
Tôi thực sự bị sốc khi các nhà phát triển plugin không đảm bảo những thứ như thế này bởi vì tôi đang tìm hiểu đây là một trong những lý do chính khiến các vấn đề tồn tại với các plugin khác nhau.
Tôi đang có một số vấn đề hơn nữa mặc dù với điều này. Ví dụ...
Tôi đã sửa đổi tập lệnh để gọi câu lệnh if như thế này:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Như bạn có thể thấy tôi đang cố gắng thiết lập mọi thứ để các tập lệnh của tôi CHỈ được gọi khi tôi thêm hoặc chỉnh sửa một bài đăng trong loại bài "sự kiện".
Tôi không muốn tập lệnh tải trên bất kỳ trang nào khác và cũng không muốn tập lệnh chạy trên danh sách trang trong loại bài "sự kiện" vì vậy tôi sẽ nghĩ câu lệnh if là chính xác.
Tuy nhiên, vấn đề có vẻ là tập lệnh chỉ được tải khi tôi tạo một bài đăng mới trong loại bài đăng này nhưng nó dường như không hoạt động khi tôi đang chỉnh sửa một bài đăng hiện có.
Bạn có thể kiểm tra điều này và có thể cho tôi biết những gì tôi có thể làm sai?
Đây là mã chính xác mà tôi đang sử dụng ... có thể có cách tốt hơn hoặc đơn giản hơn để làm điều này?
<?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");
}
}
Ngoài ra ... nếu tôi muốn thêm ba loại bài đăng và tải các tập lệnh JS khác nhau cho mỗi loại bài đăng thì tôi sẽ chỉ sao chép mã trên ba lần riêng biệt hay đây không phải là một cách tốt để làm điều này? Ví dụ ... sẽ tốt hơn nếu chỉ gọi: toàn cầu $ pagenow, $ typenow; Ở đầu tập tin chức năng của tôi hoặc nó có vấn đề hoặc phức tạp hóa mọi thứ khi tôi sao chép nó nhiều lần?
Về một vấn đề khác liên quan đến cùng một vấn đề ... Ví dụ, tôi đang sử dụng plugin "hình thức trọng lực" nhưng tôi nhận thấy các tập lệnh của họ chạy trên mọi trang trên quản trị viên đang gây ra sự cố với các plugin khác. Làm thế nào tôi có thể sửa đổi tập lệnh của họ để đảm bảo tập lệnh chỉ được tải khi tôi cần.
CẬP NHẬT 2
Tôi đã sửa đổi tệp tin.php của mình với mã do Mike cung cấp (bên dưới) tuy nhiên có vẻ như javascript có thể áp dụng vẫn được đưa vào khi bạn tạo Bài đăng hoặc Trang MỚI. Điều này có nghĩa là khi bạn cố gắng tạo một Bài đăng hoặc Trang MỚI bằng cách tạo một bài đăng / trang wordpress mặc định mới hoặc khi bạn tạo một bài đăng / trang MỚI dựa trên một trong các loại bài đăng tùy chỉnh của bạn. Mã được đề xuất bởi Mike IS hoạt động trên tất cả các trang quản trị khác và nó KHÔNG hoạt động khi bạn "EDIT" một bài đăng / trang hiện có hoặc loại bài đăng tùy chỉnh. Bất kỳ sửa đổi đề nghị để làm cho công việc này chính xác?
Đây là mã hiện tại của tôi:
<?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");
}
}
?>