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

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

Заказ микроавтобуса узнать

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Остались вопросы по статье? Задайте их прямо сейчас!
Перенос сайта на WordPress на другой домен

В повседневной работе часто приходится сталкиваться с переносом сайта на Wordpress с локального или тестового домена на основной. Для этого необходимо не только скопировать файлы, базу данных и поменять настройки в конфигурационном файле, но и сделать ряд SQL-запросов, чтобы прописать Читать далее

Правильный файл robots.txt для WordPress 2019

Самый оптимальный и простой код файла robots.txt для вашего сайта на WordPress, который подойдет для всех поисковиков. Этот вариант использую на данном сайте. Не забудьте заменить it-blog.ru на адрес вашего сайта. Содержание файла robots.txt для WordPress Если вы используете HTTPS, Читать далее

Произвольные типы записей WordPress

Произвольные типы записей позволяют разделить посты не только по категориям, но и по их типу с собственными названиями и рубриками. Это что-то типо инфоблока, как в CMS 1С-Битрикс. По умолчанию в WordPress есть возможность добавлять записи и их рубрики. К Читать далее

Произвольные поля WordPress

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

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

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

WordPress Ajax

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

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

Кнопка "Показать ещё" и бесконечный скроллинг - это по сути постраничная навигация, которая подгружает следующую страницу с постами без перезагрузки страницы. Подобные примеры часто можно встретить в лентах соц. сетей. В этом примере показана реализация кнопки "Показать ещё" и бесконечного Читать далее

Один комментарий на «Создание плагина WordPress с нуля»

  1. Евгений:

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

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