Что нужно помнить при создании плагина WordPress с нуля

Опубликовано: 2022-01-02

Плагин WordPress - это фактически один файл или группа файлов, которые расширяют или улучшают функциональность сайта WordPress.

Каждый новый разработчик знает «Как кодировать?», Но при создании плагина в WordPress разработчик должен помнить о некоторых основных требованиях для создания плагина WordPress в дополнение к качеству кода, безопасности и функциональности.

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

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

Список хуков действий: https://codex.wordpress.org/Plugin_API/Action_Reference

 определить ('WP_DEBUG', истина);
--- Параметр WP_DEBUG был добавлен в WordPress версии 2.3.1.
--- По умолчанию предполагается, что это ложь. Однако в файле wp-config.php обычно устанавливается значение true.

-> Добавьте заголовок информации о конкретном плагине в наш только что созданный файл в папке плагинов.

 / *
Название плагина: Тип сообщения с отзывами
URI плагина: https://wordpress.org/plugins/testimonial-post-type/
Описание: Создайте тип отзыва, это таксономия и теги.
Версия: 1.0
Автор: Elsner Technologies Pvt. ООО
URI автора: https://www.elsner.com
Текстовый домен: тип отзыва-пост
Путь к домену: / languages
* /

Связанный: Недавно запущенный плагин WordPress Эльснера: Шорткод слайдера сообщений

-> Все плагины должны иметь уникальные имена функций, определения и имена классов.

Это предотвращает конфликт вашего плагина с другими плагинами или темами.

-> Не используйте __ (двойное подчеркивание), wp_ или _ (одинарное подчеркивание) в качестве префикса.

Они зарезервированы для самого WordPress. Вы можете использовать их внутри своих классов, но не как отдельную функцию.

-> Защитите свой плагин от прямого доступа к файлам.

 если (! defined ('ABSPATH')) выход; // Выход при прямом доступе

- Вы можете избежать прямого доступа к файлам, поместив этот код в начало всех файлов php:

-> Пожалуйста, добавьте одноразовый номер к вашим POST-вызовам, чтобы предотвратить несанкционированный доступ.

nonce (число используется один раз)

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

Обычно мы генерируем такой URL-адрес, который удаляет post_id 174
http://example.com/wp-admin/post.php?post=123&action=trash

Этот URL идеален, но не безопасен. Предположим, злоумышленник знает идентификатор сообщений, а затем злоумышленник может удалить сообщения с этим адресом без вашего ведома.

Добавление одноразового номера предотвратит это. Например, при использовании одноразового номера URL-адрес, который WordPress создает для пользователя, выглядит следующим образом:
http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce=b192fc4204

 $ nonce = wp_create_nonce ('my-action_trash');

- Это просто возвращает само значение nonce.

- Это значение можно указать в URL-адресе, например

действие = 'http: //example.com/wp-admin/post.php? post = 123 & action = trash & _wpnonce ='. $ nonce;

- Проверка одноразового номера, переданного в URL

 wp_verify_nonce ($ _REQUEST ['_ wpnonce'], 'my-action_trash');

Связанный: Как отправить свой плагин в каталог плагинов WordPress?

-> Пожалуйста, продезинфицируйте, уйдите и подтвердите свои POST-вызовы

Санитарная обработка: очистка пользовательского ввода
Никогда не следует вставлять необработанные данные в базу данных, даже с помощью функции обновления или вызова prepare ().

Очистка ваших данных POST при их использовании для вызовов действий или перенаправления URL-адресов снизит вероятность уязвимостей XSS.

sanitize_text_field ($ _ POST ['post_name']);
- Данные можно очистить с помощью вышеуказанной функции.
- За кулисами функция выполняет следующие действия:
Проверяет наличие недопустимого UTF-8
Преобразует одиночные символы <в сущность
Удаляет все теги
Удалите разрывы строк, табуляции и лишние пробелы
Стрип октеты
- sanitize _ * () класс вспомогательных функций
https://developer.wordpress.org/plugins/security/securing-input/

Проверить: проверка ввода пользователя
Помимо дезинфекции, вы должны подтверждать все свои звонки. Если вызов $ _POST должен быть только числом, убедитесь, что это int (), прежде чем передавать его через что-либо. Каждый раз, когда вы добавляете данные в базу данных, это должны быть правильные данные.

 intval ($ _POST ['сообщение']);
--- если $ _POST ['сообщение']

имеет числовое значение, он вернет истину. Если нет, то ложь.

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

Экранирование / приведение вывода просто устраняет любую двусмысленность и добавляет ясности.

 <h4> <? php echo esc_html ($ title); ?> </h4>
--- esc_html ()

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

 esc_html (строка $ текст)

Экранирование для блоков HTML.

 esc_html_e (строка $ текст)

Отображать переведенный текст, который был экранирован, для безопасного использования в выводе HTML.

 esc_html__ (строка $ текст)

Получить перевод $ text и экранировать его для безопасного использования при выводе HTML.

 <img alt = "" src = "<? php echo esc_url ($ picture_url);?>
--- esc_url ()

следует использовать для каждого URL-адреса, включая те, которые указаны в атрибутах src и href элемента HTML.

 <? php echo esc_js (значение $); ?>
--- esc_js ()

предназначен для встроенного Javascript.

 <ul class = "<? php echo esc_attr ($ stored_class);?>">
--- esc_attr ()

можно использовать для всего остального, что печатается в атрибуте элемента HTML.

Примечание :-
Пожалуйста, проверьте ссылку ниже, чтобы понять, где находятся папки и как их лучше называть
https://codex.wordpress.org/Determining_Plugin_and_Content_Directories

Если возможно, сохраните данные в таблицы wp_options.

Конечная цель всего этого - гарантировать, что недействительные и небезопасные данные никогда не будут обрабатываться или отображаться. Очистить, проверить, избежать всего. Кроме того, никогда не верьте, что пользователи всегда будут вводить разумные данные.

Связанный: Как настроить страницу входа в WordPress