Поэтому я продолжаю сталкиваться с этой проблемой, и я просто ищу лучшее и простое решение для решения этой проблемы.
Я пришел, чтобы использовать пользовательские типы записей во многих различных проектах и расширил их с помощью пользовательских метабоксов, которые я затем расширил, добавив пользовательские сценарии, такие как селекторы календаря событий jQuery ... Все это прекрасно работает, за исключением одной ключевой проблемы ... Я не хочу, чтобы эти пользовательские скрипты jQuery загружались на каждой странице администратора.
По сути, я просто ищу способ загрузить эти пользовательские поля jquery, когда я нахожусь на странице «Редактировать сообщение» для КОНКРЕТНОГО типа сообщения.
Какое лучшее решение здесь?
ОБНОВЛЕНИЕ 1
Прежде всего, большое спасибо.
Я на самом деле шокирован тем, что разработчики плагинов не уверены в таких вещах, потому что, как я выяснил, это одна из ключевых причин, по которой существуют проблемы с различными плагинами.
У меня есть некоторые дополнительные проблемы, хотя с этим. Например...
Я изменил скрипт для вызова оператора if следующим образом:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Как вы можете видеть, я пытаюсь настроить все так, чтобы мои сценарии вызывались ТОЛЬКО при добавлении или редактировании сообщения в типе сообщения «события».
Я не хочу, чтобы скрипт загружался на любую другую страницу, а также не хочу, чтобы он запускался в списке страниц в типе записи "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 с помощью кода, предоставленного Майком (ниже), однако кажется, что применимый javascript все еще включен, когда вы создаете НОВЫЙ пост или страницу. Это означает, что при попытке создать НОВУЮ публикацию или страницу либо путем создания новой записи / страницы WordPress по умолчанию, либо при создании НОВОЙ записи / страницы на основе одного из ваших пользовательских типов записей. Код, предложенный Майком, работает на всех других страницах администратора и работает, когда вы «РЕДАКТИРУЕТЕ» существующую запись / страницу или пользовательский тип записи. Любые предложенные изменения, чтобы сделать эту работу правильной?
Вот мой текущий код:
<?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");
}
}
?>