Статьи

Изучите разработку плагинов с помощью создателя групповых категорий

В этом уроке вы начнете изучать разработку плагинов для WordPress. Пример плагина будет иметь страницу администратора с базовым элементом формы и кнопкой отправки и будет выполнять простую задачу создания групповых категорий за один раз.

Часто при разработке веб-сайта или блога на WordPress вам необходимо создавать множество категорий. В этих случаях создание категорий по очереди может стать болью. Итак, в этом уроке вы научитесь создавать плагин, который позволяет копировать список разделенных запятыми категорий в текстовую область. При нажатии на кнопку все категории загружаются в раздел категорий WordPress за один раз. Таким образом, это предотвратит необходимость сидеть и нажимать кнопку «Добавить новую категорию» для каждой категории, которая должна быть создана.

Требования:

  1. Вам понадобится локальная установка WordPress (или какой-нибудь сервер разработки)
  2. Вам нужно будет знать основные HTML и PHP

Что вы собираетесь построить (Предварительный просмотр финальной стадии того, что вы собираетесь создать)

Создатель массовой категории

Краткое примечание о плагинах WordPress

Плагины в WordPress — это в основном PHP-скрипты, которые позволяют вам изменять или добавлять новые функции в вашу существующую установку WordPress. Это может быть что-то действительно простое, например плагин «Hello Dolly», или что-то действительно продвинутое, например, плагины Jetpack или Google Analytics.

Итак, почему вы должны создать плагин?

Большинство разработчиков WordPress знают, что им не следует взламывать основные файлы WordPress в соответствии с их потребностями. Это создает проблемы обновления и может быть небезопасным. Но если изменение основного кода WordPress не является хорошим вариантом, как еще вы добавите новые функции на свой сайт WordPress? Ответ, конечно же, с помощью плагинов. Дополнительным преимуществом изучения того, как создавать плагины, является то, что вы можете узнать больше о самом WordPress и о том, как он работает. Это, в свою очередь, сделает вас лучшим разработчиком WordPress.

Разработка учебных плагинов

Чтобы создать плагин, вы должны создать определенную структуру папок для вашего плагина. Каждый плагин имеет имя каталога и один или несколько файлов PHP внутри него.

Внутри вашей структуры каталогов WordPress вы найдете каталог с именем wp-content . Внутри wp-content будет каталог с названием plugins .

Структура вашей папки будет выглядеть примерно так:

Файловая структура

Первые шаги — Создание ваших файлов

Самый первый шаг в создании плагина — это перейти в каталог wp-content вашей инсталляции WordPress, а внутри каталога перейти в каталог plugins . Внутри каталога плагинов создайте новый каталог с именем bulk-category-creator .

После того, как вы создали каталог, создайте файл с именем bulk-category-creator.php . Убедитесь, что имя каталога и имя файла PHP совпадают.

Теперь откройте ваш текстовый редактор и скопируйте в него следующий код

 <?php  

Каждый плагин имеет раздел с комментариями кода вверху, содержащий описание, информацию о версии, имя автора и информацию о лицензировании. Обычно это находится в заголовке основного файла плагина. В нашем случае он находится в bulk-category-creator.php .
Этот раздел является метаданными плагина. Давайте рассмотрим пример метаданных построчно.

  • Имя плагина: вот имя, данное плагину, в нашем случае мы называем его «Создатель групповой категории».
  • URI плагина: это ссылка на то, где плагин можно найти в Интернете для загрузки. Его можно найти в архиве WordPress.org или в другом месте.
  • Описание: это раздел, в котором вы можете описать, какие действия выполняет плагин.
  • Версия: указывает версию плагина
  • Автор: Имя автора или разработчика, который создал этот плагин
  • URI автора: ссылка на адрес автора в Интернете
  • Лицензия: лицензия, под которой выпущен этот плагин

Перейдите к панели администратора> Плагины> Установленные плагины, и вы должны увидеть свой плагин в списке.

Code Layout — плагин для групповой категории

Прежде чем приступить к написанию кода нашего плагина, давайте разберемся с некоторыми основными приемами WordPress.
По сути, в WordPress есть два основных типа хуков: действия и фильтры. Поскольку это базовое руководство по разработке плагинов, мы не будем вдаваться в подробности, но в основном они и отличаются.

  • Действия : Действия используются, когда вы добавляете что-то, когда произошло событие. Пример: действие, чтобы чирикать статью, когда новое сообщение было опубликовано.
  • Фильтры : Фильтры используются, когда вам нужно изменить некоторые данные или обработать их.

Теперь, когда вы знакомы с основами, давайте начнем кодировать наш плагин.

 add_action('admin_menu', 'rfr_CategoryCreatorMenu'); 

Эта строка кода admin_menu к функции rfr_CategoryCreatorMenu

Функция admin_menu используется для добавления подменю или пунктов меню в нашу панель администратора WordPress. Как только это будет сделано, запишите следующий фрагмент кода.

 <?php add_action('admin_menu', 'rfr_CategoryCreatorMenu'); function rfr_CategoryCreatorMenu() { add_menu_page('Bulk Category Creator Plugin','Bulk Category Creator','administrator', __FILE__, 'rfr_CategorySettingsPage' , 'dashicons-admin-plugins'); add_action('admin_init', 'rfr_RegisterPluginSettings'); } 

Если вы внимательно rfr_CategoryCreatorMenu приведенный выше фрагмент, вы увидите, что мы добавили функцию rfr_CategoryCreatorMenu в наш код. Давайте разберем строки кода одну за другой.

Мы использовали имя rfr_CategoryCreatorMenu в нашем коде. Вы можете заметить префикс rfr_ который я использовал. Всегда, при создании пользовательских плагинов для WordPress, убедитесь, что ваши функции имеют уникальные имена. Наряду с улучшением кода это разрешает конфликты, которые могут возникнуть из-за того, что разные плагины используют одно и то же имя. Поэтому всегда следите за тем, чтобы вашим функциям предшествовало уникальное имя. В этом случае я использовал rfr_ качестве префикса; Вы можете использовать все, что вы хотите. Например, вы можете использовать первые три буквы вашего имени или названия вашей компании.

Хорошо, теперь внутри функции rfr_CategoryCreatorMenu мы добавили функцию add_menu_page .

Функция add_menu_page добавляет страницу меню верхнего уровня. Эта функция имеет ряд параметров, переданных ей.

  • Первый параметр: это содержимое заголовка страницы плагина.
  • Второй параметр: это имя плагина в том виде, в каком оно отображается на панели администратора. В нашем случае это показывает Создатель Массовой Категории
  • Третий параметр: это ограничение разрешений для плагина. В нашем случае только администраторы могут получить доступ или использовать наш плагин.
  • Четвертый параметр: это слаг, используемый для ссылки на это меню
  • Пятый параметр: это функция, которая должна вызываться для отображения содержимого страницы.
  • Шестой параметр: это URL-адрес значка, который будет отображаться рядом с нашим меню на панели администратора. В нашем случае мы добавили «dashicons-admin-plugin», который является частью набора иконок, который поставляется вместе с WordPress. Обратитесь к https://developer.wordpress.org/resource/dashicons для получения дополнительных значков, которые входят в комплект WordPress по умолчанию.

Теперь, если вы посмотрите на панель администратора, вы увидите, что создано новое меню под названием «Создатель групповых категорий».

Затем мы должны добавить еще один хук к нашему действию admin_init .

 add_action('admin_init', 'rfr_RegisterPluginSettings'); 

Мы вернемся к этому через минуту.

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

Давайте определим эту функцию

 function rfr_CategorySettingsPage() { ?> <div class="wrap"> <h1>Bulk Category Creator</h1> <form method='post'><input type='hidden' name='form-name' value='form 1' /> <?php settings_fields( 'rfr-bulk-category-creator-group' ); ?> <?php do_settings_sections( 'rfr-bulk-category-creator-group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Enter categories separated by commas</th> <td> <textarea cols="50" rows="8" name="options_textarea"></textarea> </td> </tr> </table> <?php submit_button('Bulk Create Categories'); ?> </form> <?php } ?>< 

Здесь мы определяем интерфейс для страницы администрирования плагина.

В основном это состоит из формы с текстовой областью. Именно в эту текстовую область мы собираемся вставить наши категории в список через запятую.

Этот раздел представляет собой простой HTML-код, в котором определена форма, а внутри макета таблицы указана текстовая область. Просто убедитесь, что вы не забыли написать settings_fields и do_settings_sections чуть ниже декларации формы.

Теперь, если вы попытаетесь перейти к нашему недавно созданному меню «Bulk Category Creator», вы увидите следующее:

Тада! Мы успешно создали интерфейс нашего плагина. Мы добавили элемент формы HTML на панель инструментов нашего плагина.

Теперь остается только написать необходимое программирование, которое позволяет нам импортировать массовые категории за одну попытку.

 function rfr_RegisterPluginSettings() { //register our settings register_setting( 'rfr-bulk-category-creator-group', 'options_textarea' ); rfr_CreateCategories(); } function rfr_CreateCategories() { $returnedStr = esc_attr($_POST['options_textarea'] ); $trimmed = trim($returnedStr); $categories_array = explode(',',$trimmed); foreach ($categories_array as $key => $value) { $catString = $value.''; $term = term_exists($value,'category'); if($term==0 || $term==null) { create_category($value); } } } function create_category($value) { $trimmedValue = trim($value); $hyphenatedValue = str_replace(" ", "-", $trimmedValue); wp_insert_term( $trimmedValue, 'category', array( 'description' => $trimmedValue, 'slug'=> $hyphenatedValue ) ); } 

Вышеуказанный контент является базовым PHP, но давайте рассмотрим его подробно:

 $returnedStr = esc_attr($_POST['options_textarea'] ); $trimmed = trim($returnedStr); $categories_array = explode(',',$trimmed); 

$returnedStr получает значение, отправленное из текстовой области внутри элемента формы.

$trimmed удаляет пустые места слева и справа от строки.

Функция PHP explode используется для преобразования значений через запятую в переменную $categories_array Categories_array.

Далее мы используем цикл foreach для просмотра содержимого переменной $categories_array Categories_array.

 foreach ($categories_array as $key => $value) { $catString = $value.''; $term = term_exists($value,'category'); if($term==0 || $term==null) { create_category($value); } } 

Здесь мы зациклимся внутри каждой переменной, которая присутствует внутри $categories_array

$catString получает значение $value . Суффикс .' ' .' ' добавлен, чтобы убедиться, что значение является строкой.

В следующей строке $term = term_exists($value, 'category');

Мы использовали хук WordPress term_exists чтобы убедиться, что существующие имена категорий не добавляются в список категорий. Так, например, если категория с именем «tall» уже присутствует, если мы попытаемся добавить «tall» в текстовое поле создателя массовой категории, она не будет повторно добавлена ​​в список категорий.

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

Строка if($term ==0 || $term == null) обеспечивает это.

Далее мы передаем значение нашей функции create_category :

 function create_category($value) { $trimmedValue = trim($value); $hyphenatedValue = str_replace(" ", "-", $trimmedValue); wp_insert_term( $trimmedValue, 'category', array( 'description' => $trimmedValue, 'slug'=> $hyphenatedValue ) ); } 

Внутри этой функции мы делаем следующее:

$trimmedValue = trim($value);

Мы передаем $value в нашу функцию обрезки PHP, чтобы обрезать пробелы по нашему значению.

Мы также создаем дефис-значение для использования в нашем слаге, написав:

$hyphenatedValue = str_replace(" ", "-", $trimmedValue);

Здесь мы используем функцию PHP str_replace чтобы заменить пробелы между нашими словами дефисами. Например, если мы добавили категорию «Must Watch», мы получим значение $hyphenatedValue как «Must-Watch».

Затем мы используем другой хук WordPress — wp_insert_term чтобы добавить наше усеченное значение, таксономию и массив, состоящий из описания и нашего слагаемого дефиса.

Функция wp_insert_term имеет 3 параметра.

  1. Первый параметр: значение для вставки
  2. Второй параметр: требуется таксономия. В нашем случае «категория»
  3. Третий параметр: массив, состоящий из описания и нашего слага

Полный код указан ниже

 < ?php add_action('admin_menu', 'rfr_CategoryCreatorMenu'); function rfr_CategoryCreatorMenu() { add_menu_page('Bulk Category Creator Plugin','Bulk Category Creator','administrator', __FILE__, 'rfr_CategorySettingsPage' , 'dashicons-admin-plugins'); add_action('admin_init', 'rfr_RegisterPluginSettings'); } function rfr_RegisterPluginSettings() { //register our settings register_setting( 'rfr-bulk-category-creator-group', 'options_textarea' ); rfr_CreateCategories(); } function rfr_CreateCategories() { $returnedStr = esc_attr($_POST['options_textarea'] ); $trimmed = trim($returnedStr); $categories_array = explode(',',$trimmed); foreach ($categories_array as $key => $value) { $catString = $value.''; $term = term_exists($value,'category'); if($term==0 || $term==null) { create_category($value); } } } function create_category($value) { $trimmedValue = trim($value); $hyphenatedValue = str_replace(" ", "-", $trimmedValue); wp_insert_term( $trimmedValue, 'category', array( 'description' => $trimmedValue, 'slug'=> $hyphenatedValue ) ); } function rfr_CategorySettingsPage() { ?> <div class="wrap"> <h1>Bulk Category Creator</h1> <form method='post'><input type='hidden' name='form-name' value='form 2' /> < ?php settings_fields( 'rfr-bulk-category-creator-group' ); ?> < ?php do_settings_sections( 'rfr-bulk-category-creator-group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Enter categories separated by commas</th> <td> <textarea cols="50" rows="8" name="options_textarea"></textarea> </td> </tr> </table> < ?php submit_button('Bulk Create Categories'); ?> </form> </div> < ?php } ?> 

Теперь перейдите к Панели администратора> Создатель групповых категорий и введите список категорий.

В этом примере я добавляю Tall, Medium, Short и Ultra Short в текстовую область.

Массовое создание категорий

Теперь нажмите на Массовое создание категорий

Затем перейдите в Панель администратора> Сообщения> Категории, и вы увидите, что наши категории были добавлены в список категорий.

Список категорий

Успех! Наш список категорий был создан за один раз. Обратите внимание, что в разделе «Слизняк» наша категория «ультракороткие» переносится как «ультракороткие».

Итак, в нашем уроке вы успешно создали свой первый плагин WordPress, плагин для создания групповых категорий. Если вы прошли этот урок, у вас должен быть работающий плагин WordPress!

Если вы хотите распространить этот плагин среди своих друзей, просто сожмите каталог плагинов в ZIP-файл, и все готово.

Спасибо за то, что следовали этому уроку! Если у вас есть вопросы или комментарии, оставьте их в разделе комментариев ниже!