그래서 나는이 문제를 계속 겪고 있으며이 문제를 해결할 수있는 가장 좋고 가장 간단한 해결책을 찾고 있습니다.
많은 다른 프로젝트에서 사용자 정의 게시물 유형을 사용하고 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
Mike (아래)가 제공 한 코드로 functions.php 파일을 수정했지만 NEW Post 또는 Page를 만들 때 적용 가능한 JavaScript가 여전히 포함되어있는 것 같습니다. 즉, 새 기본 Wordpress 게시물 / 페이지를 만들어서 새 게시물 또는 페이지를 만들거나 사용자 지정 게시물 유형 중 하나를 기반으로 새 게시물 / 페이지를 만들 때를 의미합니다. Mike가 제안한 코드는 다른 모든 관리 페이지에서 작동하며 기존 게시물 / 페이지 또는 사용자 정의 게시물 유형을 "편집"할 때 작동합니다. 이 작업을 올바르게하기 위해 제안 된 수정 사항이 있습니까?
내 현재 코드는 다음과 같습니다.
<?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");
}
}
?>