Статьи

10 необходимых знаний для разработчика плагинов WordPress

WordPress является самой мощной CMS-инфраструктурой, доступной на данный момент. Он может быть использован для создания очень гибких и расширяемых веб-сайтов с минимальным объемом работы. Я считаю, что структура плагинов и тем является основной причиной успеха CMS. На официальном сайте WordPress бесплатно доступно около 21 000 плагинов.

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

1. Создание плагина

Первым шагом будет создание вашей собственной папки плагинов в папке / wp-content / plugins . После того, как папка создана, вы должны поместить файлы плагинов в эту папку. У вас должен быть основной файл для вашего плагина. Файлы должны быть названы простыми буквами с дефисами (-) для разделения слов.

  • Пример имени файла: wp-multi-slider.php

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

 

Вы сможете увидеть плагин в разделе плагинов Dashboard, как показано ниже.

2. Активация / деактивация плагина

Плагины можно активировать, нажав Активировать ссылку в списке плагинов. В простом плагине вам не нужно ничего делать при активации. Но для продвинутого плагина потребуются такие задачи, как инициализация параметров плагина, создание таблиц плагинов и т. Д. Итак, давайте посмотрим, как мы можем справиться с активацией и деактивацией плагина.

Крюк активации плагинов

WordPress предоставляет функцию с именем register_activation_hook которая будет запускаться при активации плагина. Мы можем добавить пользовательскую функцию для выполнения при активации плагина, используя этот метод, как показано ниже.

 function wp_sample_activation() { } register_activation_hook(__FILE__, 'wp_sample_activation'); 

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

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

Плагин Деактивация Крюк

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

 function wp_sample_deactivation() { } register_deactivation_hook(__FILE__, 'wp_sample_deactivation'); 

3. Создание пользовательских таблиц

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

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

 global $wpdb; $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}sample_table"); $sql1 = "CREATE TABLE {$wpdb->prefix}sample_table ( id int(11) NOT NULL AUTO_INCREMENT, activation_code varchar(255) NOT NULL, email varchar(75) NOT NULL, status int(11) NOT NULL, PRIMARY KEY  (id) ) ENGINE=InnoDB AUTO_INCREMENT=1;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql1); 

Сначала проверьте, существует ли таблица, прежде чем создавать ее. Вы можете принять решение об удалении и создании таблицы активации на основе ваших требований. Вы можете видеть, что я использовал {$wpdb->prefix} перед именем таблицы. Как правило, таблицы WordPress имеют префикс wp_. , Это можно изменить при установке базы данных; поэтому вам не следует жестко кодировать wp_ в качестве префикса, чтобы обеспечить повышенную гибкость.

{$ wpdb-> prefix} даст вам префикс, определенный для текущей установки. Поэтому всегда используйте этот синтаксис перед созданием нового имени таблицы.

Даже если вы можете использовать функцию запроса $ wpdb-> для создания таблиц, рекомендуется использовать функцию dbDelta, поскольку она сравнивает текущую структуру таблицы. По умолчанию он не загружается, поэтому сначала нужно включить файл.

4. Включая скрипты и стили

Даже если вы можете просто отобразить сценарии и стили в любом месте, рекомендуется добавлять сценарии с wp_enqueue_script функции wp_enqueue_script . Эта функция проверяет, доступны ли файлы, а также зависимости от других сценариев. Следующий пример иллюстрирует эффективное использование wp_enque_script.

 add_action('wp_enqueue_scripts', 'sample_scripts'); function sample_scripts() { wp_enqueue_script('jquery'); wp_register_style('sample_style', plugins_url('styles.css', __FILE__)); wp_enqueue_style('sample_style'); wp_register_script('jqueryUICore', plugins_url('ui/jquery.ui.core.js', __FILE__),array(“jQuery”)); wp_enqueue_script('jqueryUICore'); $config_array = array(“sample_name”=>”sample_value”]); wp_localize_script('jqueryUICore', 'sampleData', $config_array); } 

Сначала вы можете использовать wp_register_style для регистрации файла стиля и wp_enqueue_style для включения файла. Необходимо указать уникальный идентификатор и путь к файлу стиля. Затем wp_enqueue_script сценарии с wp_enqueue_script функции wp_enqueue_script . Если это зависит от других скриптов, вы можете указать это как третий параметр. Я использовал jQuery в качестве зависимости.

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

Обязательно используйте действие admin_enqueue_script вместо wp_enqueue_script для стороны администратора.

5. Создание шорткодов

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

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

 add_shortcode("shortcode_name", "shortcode_function"); function shortcode_function() { return “<input type='button' value='Share' /> “; } 

Присвойте имя и функцию add_shortcode функции add_shortcode . Затем верните тип контента, который вы хотите отобразить в браузере внутри функции. Приведенный выше шорткод создает простую кнопку HTML.

Используйте шорткод на страницах, постах или плагинах для отображения кнопки, используя следующий синтаксис:

[shortcode_name /]

6. Фильтрация контента

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

 function sample_content_filter($content) { $banners = “HTML for banners”; $author = “HTML for author info”; return $banners.$content.$author; } add_filter( 'the_content', 'sample_content_filter' ); 

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

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

 function sample_content_filter($content) { if(is_single()){ return $banners.$content.$author; } } 

7. Работа с Ajax

В идеале вы должны знать, как использовать Ajax в WordPress для предоставления интерактивного контента пользователям. Функциональность jQuery Ajax - простой способ освоить это.

 $.post("admin-ajax.php", { action:"sample_ajax_action" }, function(result, textStatus) { }, "json"); 

Самая важная вещь в вышеупомянутом Ajax-запросе - это действие. Он будет использоваться в коде WordPress для идентификации запроса. Также все запросы Ajax должны быть отправлены в файл admin-ajax.php .

 function sample_ajax_action() { echo json_encode($your_result_array); exit; } add_action('wp_ajax_nopriv_sample_ajax_action', 'sample_ajax_action'); add_action('wp_ajax_sample_ajax_action', 'sample_ajax_action'); 

Вы можете видеть, что то же имя действия, которое используется в Ajax, используется здесь с префиксами wp_ajax_nopriv_ и wp_ajax_ . wp_ajax_ используется для вошедших в систему пользователей, а wp_ajax_nopriv_ используется для пользователей, которые не вошли в систему.

8. Написание SQL-запросов

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

 $wpdb->query($wpdb->prepare("update wp_sample_table set status=1 where activation_code=%s and status=%d",$activationCode,$status)); 

Как показано выше, всегда назначайте escape-символы для SQL и значения переменных в конце для фильтрации данных перед выполнением в SQL.

9. Добавление опций

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

Мы можем легко создать опции для предоставления дополнительных полей, как показано ниже.

 add_action('add_meta_boxes', 'add_custom_fields_box'); function add_custom_fields_box() { add_meta_box('custom_fields_box_id', 'Custom Info', 'display_custom_info_box', 'post', 'normal', 'high'); } function display_custom_info_box() { global $post; $html = "<table><tr><td>Custom Checkbox</td><td><input id='custom_checkbox' type='checkbox' name='custom_checkbox'  /></td></tr> <tr><td>Custom Selecy</td><td><select name='custom_select'  > <option>Option 1</option> </select></td></tr> <tr><td>Custom Upload</td><td><input id='custom_file' type='file' name='custom_file'  /></td></tr></table>"; echo $html; } 

Значения полей будут сохранены в таблице wp_options как пользовательские поля. Чтобы избежать дублирования с разделом пользовательских полей, перед именами полей параметров следует ставить подчеркивание .

10. Использование одноразовых номеров для безопасности плагина

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

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

 wp_nonce_field('sample_frm_nonce', 'sample_frm_nonce'); 

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

 if (!isset($_POST['sample_frm_nonce']) || !wp_verify_nonce($_POST['sample_frm_nonce'], 'sample_frm_nonce')){ return; } 

Если одноразовый номер не подтвержден, запрос больше не обрабатывается.

API плагинов WordPress огромен, и нелегко охватить все, что с ним связано. Здесь я рассмотрел лишь 10 самых распространенных вещей, которые могут вам понадобиться в процессе создания плагинов. Не стесняйтесь предлагать больше концепций, которые вы можете принять во внимание как разработчик плагинов.