К основному контенту

Создание плагина WordPress, что такое хуки, создание пунктов меню и подменю в админ панели

Приветствую всех!
Поговорим немного о WordPress. Темой этого поста будут хуки (hooks). При разработке плагина я использовала многие языки и технологии, такие как MySQL, AJAX, JavaScript, Bootstrap, ну и конечно же PHP. Знание HTML и CSS является, конечно-же, обязательным, хотя-бы, основ. Скоро будет цикл статей, и я постаралась собрать те хуки, по которым сложно найти информацию на русскоязычных ресурсах, а есть хуки и экшены, по которым почти нет информации в сети вообще. Местами могу повторять некоторые ресурсы, за что заранее приношу извинения. Буду также рассказывать о очень распостраненных хуках, которые надо обязательно знать при написании плагина.

Что такое хуки? На первый взгляд, когда я начала изучать WordPress, они мне казались загадочными и странными, их казалось слишком много (их действительно ОЧЕНЬ много), но в работе, как оказалось, нужно не так много. При определенной сноровке, поиск нужных хуков становится довольно простой задачей. Но давайте сначала разберемся, зачем это нужно.
Hook в прямом переводе с английского означает "крючок", т.е. зацепка. Слово отлично отображает смысл этого явления, так как хуки - это пользовательские функции, которые привязаны к определенным функциям WordPress. Все сайты WordPress состоят из определенных функций, в которые можно внести изменения, либо переписать их. Напрямую код сайта менять нельзя. Хуки можно внести только в файл functions.php, либо в свой плагин.
Привязка хука может быть двух типов: выполнение пользовательской функции(после выполнения основной функции WordPress) – фильтр, и выполнение пользовательской функции взамен стандартной функции WordPress – действие.
Для тех, кто привык к программистской терминологии - вот еще одно определение: хук - это перегрузка функций WordPress.

Итак, начнем с простого, как добавить плагин в админ меню, и как сделать подстраницы меню плагина?
Для этого существует хук admin_menu. В первой строке мы объявляем о том, что хотим создать хук (add_action), admin_menu - сам хук, к которому происходит зацепка, my_plugin_menu - название нашей функции в которой непосредственно мы пишем то, что хотим добавить, эту часть мы можем назвать как угодно на самом деле, т.к. это наша личная функция, но советую наполнить название смыслом.
в 3 строке начинается сама функция. в 5 строке мы используем функцию wordpress add_menu_page, в 6 - add_submenu. При правильном указании аргументов у вас в панели должно получиться нечто такое:

Давайте разберемся с аргументами.

add_menu_page(заголовок страницы, название пункта меню, уровень доступа(можно оставить его 8), расположение файла на который будет перенаправление при нажатии на этот пункт меню, иконка(необязательно), позиция в меню(номер строки))

add_submenu_page(расположение файла на который идет перенаправление при нажатии на главный пункт меню, заголовок страницы, название пункта подменю,  уровень доступа, расположение страницы в которой будет располагаться код данного подпункта меню)


  1. add_action( 'admin_menu', 'my_plugin_menu');
  2. function my_plugin_menu() 
  3. {
  4.   add_menu_page( 'My Plugin Options', 'User Plans', 8, PRICE_PLUGIN_DIR.'notifications.php', '', 'dashicons-groups', 6);
  5.   add_submenu_page( PRICE_PLUGIN_DIR.'notifications.php', 'Notifications', 'Notifications', 8, PRICE_PLUGIN_DIR.'notifications.php' );
  6.   add_submenu_page( PRICE_PLUGIN_DIR.'notifications.php', 'Plans', 'Plans', 8, PRICE_PLUGIN_DIR.'plans.php' );
  7. }

Комментарии

Популярные сообщения из этого блога

Прата С. Решение задач 6 главы

На решение этих задач у меня ушло 2 дня. Становится все интереснее и интереснее! и черт возьми, я наконец-то поняла работу с файлами! прошу прощения за корявые условия. просто в нормальном формате электронной книги у меня нет, потому скрины задач просто пропущены через Файнридер.

6 глава, Лафоре Р

*1. Создайте класс Int, имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int. Напишите программу, в которой будут созданы три объекта класса Int, два из которых будут инициализированы. Сложите два инициализирован- ных объекта, присвойте результат третьему, а затем отобразите результат на экране.

7 глава, Лафоре Р

*1. Напишите функцию reversit(), которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний символы, затем следующие и т. д. до предпоследнего. Строка должна пере- даваться в функцию reversit() как аргумент. Напишите программу для выполнения функции reversit(). Программа долж- на принимать строку от пользователя, вызывать функцию reversit(), а за- тем выводить полученный результат. Используйте метод ввода, который позволяет использовать внутренние пробелы. Протестируйте программу на примере фразы «Аргентина манит негра».