Intereting Posts
условное заявление на основе условий Мета-боксы в форме отправки переднего конца Отдельные изображения из текста в сообщении Заменить функцию в дочерней теме Добавить статическую страницу, которая ссылается на главную страницу Пользовательское изображение заголовка и его содержимое на странице «Объявления» в двадцать первом со статической передней страницей Как определить, что вызывает перенаправление для данной страницы? Как запускать comment_form_after действие, если comment_form () не используется Добавление опции в Shortcode галереи Как я могу перечислить сообщения с разными форматами в зависимости от заказа? Получать сообщение по термину из пользовательской таксономии в другом блоге в сети? Как перенаправить пользователя после таймаута сеанса Почему только первая операция выполняется в моем цикле – за исключением последнего повтора? Различная постоянная ссылка для CPT и обычных сообщений / страниц, но почему? Host wp-content в другом домене, как CDN

Плагин. Убедитесь, что jquery загружен на моей странице настроек плюс мой JS-файл.

Я создаю свой первый плагин wordpress, и я изо всех сил стараюсь найти правильный и лучший способ убедиться, что jquery и мой собственный JS-файл включен на мою страницу настроек моего плагина.

Мне не нужно, чтобы они загружались где-нибудь еще, если на моей странице настроек.

Какой код и где его поместить в мой плагин?

Это то, что я имею до создания страницы настроек:

add_action("admin_menu", "create_admin_pages"); function create_admin_pages() { add_submenu_page('options-general.php', "MYPLUGIN", "MYPLUGIN", 10, "my-plugin", 'settings_page'); } functions settings_page() { // Settings form is here and I need Jquery and my script loaded for this } 

EDIT: вышеприведенный код немного окунулся, чтобы не показывать функцию плагинов, пока она не будет готова к выпуску. Кодирование плагина, которое я кодирую, завернуто в класс, так что все нормально, что имена функций являются общими.

Solutions Collecting From Web of "Плагин. Убедитесь, что jquery загружен на моей странице настроек плюс мой JS-файл."

Сначала используйте add_options_page() – более короткую обертку, лучшую практику.

Во-вторых, вам нужно сохранить его возврат в некоторой (глобальной или статической) переменной. Это часто используется thingie и смутно ссылаются на разные имена в документации. Глобальное $hook_suffix имеет такое значение для текущей страницы.

 function create_admin_pages() { global $my_page; $my_page = add_options_page(... 

Оттуда это что-то вроде этого:

 add_action('admin_enqueue_scripts', 'enqueue_script'); function enqueue_script($hook_suffix) { global $my_page; if ($my_page == $hook_suffix) wp_enqueue_script('my_script', plugins_url('my_script.js', __FILE__), array('jquery')); } 

Вы можете использовать admin_print_scripts-{$page} чтобы включать или вставлять в очередь свои скрипты только на своей странице, например:

 $page = add_management_page( 'myplugin', 'myplugin', 9, __FILE__, 'myplugin_admin_page' ); add_action( "admin_print_scripts-$page", 'myplugin_plugin_add_scripts' ); function myplugin_plugin_add_scripts(){ wp_enqueue_script('myscript', '/wp-content/plugins/myplugin/myscript.js'); } 

таким же образом вы можете использовать admin_print_styles-$page чтобы включить стили css.

Если ваш код обернут внутри класса, используйте переменную класса для хранения крючка страницы плагина, это упростит ссылку и в основном сделает то, что делает Rarst, но без глобальных заявлений …

 class WPSE_Example_Code { private $hook; function __construct() { add_action( 'admin_menu', array( $this, 'on_admin_menu' ) ); } function on_admin_menu() { $this->hook = add_options_page( .. your params .. ); add_action( 'admin_enqueue_scripts', array( $this, 'on_admin_enqueue_scripts' ) ); // OR (you'd not need the conditional statement in the function below if using this method) // add_action( 'admin_print_scripts-' . $this->hook , array( $this, 'on_admin_enqueue_scripts' ) ); } function on_admin_enqueue_scripts( $hook_suffix ) { if( $this->hook != $hook_suffix ) return; wp_enqueue_script( 'your-script-handle', plugins_url( '/yourfilename.js', __FILE__ ), array( 'jquery' ), '1.0', true ); } } 

С технической точки зрения, как admin_print_scripts-$hook и admin_enqueue_scripts оба подходят для вашего использования, которые вы используете, это действительно вопрос предпочтения. Я обычно использую admin_print_scripts-$hook (потому что мне обычно нужен только сценарий для одной страницы, он избегает необходимости писать условную логику внутри обратного вызова, как в моем примере).