Я создаю свой первый плагин 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
}
РЕДАКТИРОВАТЬ: приведенный выше код несколько упрощен, поэтому не раскрывать функцию плагинов до тех пор, пока она не будет готова к выпуску. Плагин, который я кодирую, заключен в класс, поэтому нормально, что имена функций являются общими.
Поздравляем с вашим первым плагином WP! Надеюсь, вы вернетесь еще! 🙂
Спасибо, Джон. Этот плагин является ответвлением того, поддержку которого разработчик прекратил. Плагин невероятно полезен в моей области веб-разработки и поддержки, но в нем отсутствуют некоторые ключевые функции, которые я сейчас встраиваю. Однако я создаю плагин с нуля. Я уверен, что скоро у меня будет еще много вопросов, чтобы отправить сюда 🙂
Я бы порекомендовал сделать это именно так, хотя я согласен с предложением Рарста относительно использования
add_options_page()
.Да, это тоже неплохо бы сработало. Вы забыли зависимость jquery (часть вопроса).
@Chip: я публиковал что-нибудь, говорящее о том, что вам следует использовать что-то еще?
add_management_page()
работает так же, просто добавляет новую созданную подстраницу в меню дорожных сборов вместо опций.Спасибо за ваш вклад в использование
admin_print_scripts-$page
. Я использовал это, но дал ответ Рарсту, поскольку он рассказал о ряде других вещей, которые мне были нужны, и он был первым в…Спасибо t3los. Да, я учусь в классе, и я уже смог сделать то, что вы указали в приведенных выше примерах. Но плюс один за то, что все это для меня обернуто и я знаю, что я могу поместить начальное add_action в __construct моего класса, а не после инициализации моего класса плагина.
Первое использование
add_options_page()
— более короткая обертка, лучшая практика.Во-вторых, вам нужно сохранить результат в некоторой (глобальной или статической) переменной. Это часто используется, и в документации на него ссылаются разными именами. Global
$hook_suffix
содержит такое значение для текущей страницы.Оттуда примерно так:
Вы можете
admin_print_scripts-{$page}
подключиться, чтобы включить или поставить свои скрипты в очередь только на своей странице, например:таким же образом вы можете использовать
admin_print_styles-$page
стили css.Если ваш код обернут внутри класса, используйте переменную класса для хранения хука страницы плагина, это упростит обращение и в основном сделает то, что делает Rarst, но без необходимости глобальных операторов…
С технической точки зрения, один
admin_print_scripts-$hook
илиadmin_enqueue_scripts
оба подходят для вашего использования, что вы используете, на самом деле вопрос предпочтений. Я склонен использоватьadmin_print_scripts-$hook
себя (потому что мне обычно нужен скрипт только для одной страницы, это позволяет избежать необходимости писать условную логику внутри обратного вызова, как в моем примере).