Создание плагина WordPress с нуля

18 сентября 2019 WordPress
Когда я создавал свой первый плагин, то оказалось, что в сети очень мало информации по этому вопросу. С трудом удалось найти даже основы. Надеюсь эта статья поможет вам научиться писать различные плагины для WordPress.
Наверняка вы уже пользовались и знаете, что такое хуки WordPress, которые размещают в файле functions.php. Если нет, то желательно почитать что такое хуки и как их использовать , так как код плагинов очень схож с кодом в functions.php
В этой статье рассмотрим пример создание плагина, который добавляет код Яндекс.Метрики на сайт. Сам код будет размещаться и редактироваться в настройках плагина в панели администрирования.
Содержание
Создание структуры плагина
Для создания плагина необходимо в папке /wp-content/plugins/ создать новую папку с именем нашего плагина. Если плагин состоит только из одного файла, то можно разместить этот файл сразу в папке plugins. Наш плагин будет использовать несколько файлов и использовать отдельную папку я думаю лучше.
Создаем папку addmetric и сразу добавляем в нее 2 файла addmetric.php — основной код плагина и uninstall.php — код, который будет вызываться при удалении плагина.
Создание страницы с настройками
Открываем файл addmetric.php и прописываем название плагина следующим образом:
<?php /* Plugin Name: AddMetric */
Теперь в разделе Плагины → Установленные появился наш плагин. Нажимаем Активировать.
Создаем пункт с настройками в меню. Все в том же файле ниже пишем код:
// Добавить страницу настроек в меню
function am_register_options_page() {
add_options_page('Добавить код метрики', 'Добавить код метрики', 'manage_options', 'addmetric', 'am_options_page');
}После чего у нас появляется новый пункт меню в настройках.
Добавляем код страницы:
// Вывод формы
function am_options_page() {
if (isset($_POST['submit'])) {
if (function_exists('current_user_can') && !current_user_can ('manage_options')) {
die ('Hacker?');
}
if (function_exists ('check_admin_referer')) {
check_admin_referer('addmetric_form');
}
$am_text = $_POST['am_text'];
update_option('am_text', $am_text);
echo '<p>Успешно сохранено!</p>';
}
?>
<div>
<h2>Добавить код метрики</h2>
<form method="post" name="addmetateg">
<?
if (function_exists ('wp_nonce_field') ) {
wp_nonce_field('addmetric_form');
}
$cur_text = get_option('am_text');
?>
<p>Введите код Яндекс.Метрики</p>
<table class="form-table">
<tbody>
<tr valign="top">
<th><label for="am_text">Код:</label></th>
<td><textarea name="am_text" rows="10" cols="100"><?echo stripslashes_deep($cur_text);?></textarea></td>
</tr>
</tbody>
</table>
<?submit_button();?>
</form>
</div>
<?}Тут создается обычная форма с полем и небольшой проверкой на права пользователя. Значение поля записывается и выводится из настройки сайта с помощью функции get_option('am_text');
Вывод плагина на сайте
И добавляем код метрики из настроек с помощью хука на сайт :
// Добавить код в wp_footer()
function add_metric_to_footer() {
echo stripslashes_deep(get_option('am_text')); /// выводим код метрики без экранирующих слэшей у строковых значений
}
add_action( 'wp_footer', 'add_metric_to_footer' );Полный код файла addmetric.php:
<?php
/*
Plugin Name: AddMetric
*/
// Добавить страницу настроек в меню
function am_register_options_page() {
add_options_page('Добавить код метрики', 'Добавить код метрики', 'manage_options', 'addmetric', 'am_options_page');
}
add_action('admin_menu', 'am_register_options_page');
// Вывод формы
function am_options_page() {
if (isset($_POST['submit'])) {
if (function_exists('current_user_can') && !current_user_can ('manage_options')) {
die ('Hacker?');
}
if (function_exists ('check_admin_referer')) {
check_admin_referer('addmetric_form');
}
$am_text = $_POST['am_text'];
update_option('am_text', $am_text);
echo '<p>Успешно сохранено!</p>';
}
?>
<div>
<h2>Добавить код метрики</h2>
<form method="post" name="addmetateg">
<?
if (function_exists ('wp_nonce_field') ) {
wp_nonce_field('addmetric_form');
}
$cur_text = get_option('am_text');
?>
<p>Введите код Яндекс.Метрики</p>
<table class="form-table">
<tbody>
<tr valign="top">
<th><label for="am_text">Код:</label></th>
<td><textarea name="am_text" rows="10" cols="100"><?echo stripslashes_deep($cur_text);?></textarea></td>
</tr>
</tbody>
</table>
<?submit_button();?>
</form>
</div>
<?}
// Добавить код в wp_footer()
function add_metric_to_footer() {
echo stripslashes_deep(get_option('am_text')); // выводим код метрики без экранирующих слэшей у строковых значений
}
add_action( 'wp_footer', 'add_metric_to_footer' );Удаление плагина
При деинсталляции плагина WordPress вызывает файл uninstall.php из папки плагина, чтобы плагин очистил свои следы. В нашем случае можно удалить настройку с кодом метрики, чтобы она не осталась в базе данных, если плагин будет удалён.
Записываем в файл uninstall.php:
delete_option('am_text');Создание архива для установки
Тут все очень просто. Добавляем папку нашего плагина в архив addmetric.zip и все готово. Теперь архив с плагином можно будет устанавливать на другие сайты WordPress из админ-панели.
Заказ микроавтобуса узнать




Отличная статья! Спасибо и успехов вам!