因此,我继续遇到此问题,而我只是在寻找最佳和最简单的解决方案来解决此问题。
我开始在许多不同的项目中使用自定义帖子类型,并通过自定义元框扩展了它们,然后通过添加自定义脚本(如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脚本,那么我是否将代码重复3次以上还是这样做的好方法?例如……最好打电话:global $ pagenow,$ typenow; 在我的函数文件的顶部,或者当我多次复制它时,它是否有意义或使事情复杂化?
关于与之相关的不同问题...例如,我正在利用“重力形式”插件,但我注意到他们的脚本在管理员的每个页面上运行,这导致其他插件出现问题。我将如何修改其脚本以确保仅在需要它们时才加载脚本。
更新2
我已经使用Mike(如下)提供的代码修改了functions.php文件,但是当您创建新的帖子或页面时,似乎仍包含适用的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");
}
}
?>