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

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

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

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

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

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

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

WordPress Ajax

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

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

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

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

  1. Евгений:

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

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