Skip to main content

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

Создание плагина 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 из админ-панели.

Похожие записи
Как создать виджет WordPress

Виджеты используются для добавления контента на страницу WordPress без изменения шаблонов тем. Боковая панель является... Читать далее

Оптимизация WordPress

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

Отправка сообщений в Telegram из Contact Form 7

Мы уже рассматривали как отправлять сообщения в телеграмм из обычного PHP скрипта и заказы из... Читать далее

Получить параметры сайта с помощью функции get_bloginfo() WordPress

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

Что такое шорткод и как его использовать

Шорткоды - это PHP функции, которые можно вставлять в текст записи, страницы или другой таксономии... Читать далее

Contact Form 7 reCAPTCHA. Установка и настройка

Защитить от спама свои контактные формы на сайте WordPress, созданные в плагине Contact Form 7... Читать далее

Комментарий “Создание плагина WordPress с нуля”

Добавить комментарий

*

code