Как написать простой плагин для WordPress

Как написать простой плагин для WordPress

Содержимое

Доброго времени суток! Хоть опыта создания плагинов у меня очень небольшой. Но в этой статье, я хочу привести пример разработки простого плагина. В задачи которого будет входить:

  1. Сохранение информации в БД через панель администратора.
  2. Вывод этой информации во фронт энде, для гостя.

И первое что нам нужно сделать — это в каталоге «/wp-content/plugins/» создать папку для нашего плагина. Назовем ее к примеру «my-plugin».

Второе — поместить в эту папку php файл отвечающий за работу плагина. Я, обычно называю такой файл идентично каталогу. В нашем случае «my-plugin.php».

Третье. Чтобы WP понял что это плаги, нам нужно в самом верху файла «my-plugin.php» разместить специальную информацию. Прочтя которую, WordPress определить название плагина, его описание, автора и ссылки на сайт и его страничку. В примере можно использовать следующий код-комментарий:

/*
Plugin Name: My Plugin
Plugin URI: http://example.com
Description: My Plugin Description
Version: 1.0
Author: My Name
Author URI: http://example.com
License: GPL2
*/

где:
Plugin Name — название плагина
Plugin URI — страничка плагина
Description — его описание
Version — версия
Author — авто плагина
Author URI — адрес сайта автора
License — вид лицензии

Ниже этого комментария, можно привести лицензионную информацию по плагину.

Back-end сайта (панель администратора)

Чтобы перейти на страничку плагина, где будет размещаться форма сохранения данных. Сперва, нам нужно добавить в меню админки ссылку. Вариантов, где разместить ссылку несколько — в каком либо из существующих меню или отдельной ссылкой. Так же можно создать многоуровневое меню (как реализовано меню «Настройки», «Записи» и т.п.).

Используя хук «admin_menu», мы можем создать меню. К примеру так:

/* Добавляем в меню админки пункты меню */
function myp_admin_action()
{
	/* Добавляем подпункт меню в раздел "Настройки" */
    add_options_page('Мой плагин (заголовок)', 'Мой плагин (пункт меню)', 'manage_options', __FILE__, 'myp_admin_page_options');
}
/* Регистрируем ф-ю для формирования меню */
add_action('admin_menu', 'myp_admin_action');

Функция «add_options_page» имеет 5ть параметров:

Первый — текст, который будет использован в title страницы нашего плагина.
Второй — текст, который будет использован в качестве называния нашего пункта меню.
Третий — название права доступа для пользователя, чтобы ему был доступен данный пункт меню (полный список можно найти в кодексе).
Четвертый — идентификатор меню (нужно вписывать уникальную строку, пробелы не допускаются).
Пятый - название функции, которая отвечает за код страницы этого пункта меню.

В нашем примере, за отображение формы плагина,отвечает ф-я «myp_admin_page_options». Ее содержимое следующее:

function myp_admin_page_options()
{
?>
	<div class="wrap">
		<h2><?php echo __('Настройки плагина "My Plugin"', 'myp_domain')?></h2>
		<form method="post" action="options.php">
			<?php wp_nonce_field('update-options'); ?>
			<input type="hidden" name="action" value="update" />
			<input type="hidden" name="page_options" value="myp_param1,myp_param2" />
			<p>
				<?php echo __('Опция 1:', 'myp_domain'); ?>
				<input type="text" name="myp_param1" value="<?php echo get_option('myp_param1'); ?>" size="20">
			</p>
			<p>
				<?php echo __('Опция 2:', 'myp_domain'); ?>
				<input type="text" name="myp_param2" value="<?php echo get_option('myp_param2'); ?>" size="20">
			</p>
			<?php submit_button(); ?>
		</form>
	</div>
<?php
}

Выше указанный код, сгенерирует следующую форму:

Пример формы плагина My Plugin

Давайте остановимся подробнее на некоторых важных деталях.

Код ниже, выводит проверочное (защитное, одноразовое) скрытое поле для формы. Без этого форма не сработает и данные сохранены в базу не будут.

wp_nonce_field('update-options');

А благодаря этому коду, выполняется сохранение данных в БД:

<input type="hidden" name="action" value="update" />

Хранит список переменных, перечисленных через запятую, которые будут сохранены в БД:

<input type="hidden" name="page_options" value="myp_param1,myp_param2" />

за это отвечает скрытая переменная «page_options».

А код:

<p>
	<?php echo __('Опция 1:', 'myp_domain'); ?>
	<input type="text" name="myp_param1" value="<?php echo get_option('myp_param1'); ?>" size="20">
</p>
<p>
	<?php echo __('Опция 2:', 'myp_domain'); ?>
	<input type="text" name="myp_param2" value="<?php echo get_option('myp_param2'); ?>" size="20">
</p>

отвечает за отображение текстовых полей и вывод в них сохраненных значений.

За получение данных настроек из БД и отвечает код:

get_option('myp_param1');

Функция «submit_button();» обеспечивает отображение клавиши SUBMIT нашей формы.

И самое последнее что нам нужно, и о чем иногда забывают разработчики — это удаление данных из БД наших настроек при удалении самого плагина. Но здесь вопрос спорный. А что если вы решите установить плагин обратно, и вам будут нужны старые настройки? Хорошее оправдание, не правда ли?

Ниже, приведен пример на основе деактивации плагина.:

register_deactivation_hook(__FILE__, 'myp_deactivate');

function myp_deactivate()
{
	delete_option('myp_param1');
	delete_option('myp_param2');
}

Для удаления используйте функцию «register_uninstall_hook». Я удаление не делаю из-за того, что на моем компьютере не настроен FTP.

Front-end сайта (то что видит гость)

Здесь все просто. Чтобы отобразить данные которые мы сохранили в БД, используйте функцию «get_option();» а в качестве параметра — название вашей опции. Т.е.:

<?php echo get_option('myp_param1'); ?>
/*или*/
<?php echo get_option('myp_param2'); ?>

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

На этом все.

Поделиться в соцсетях:
Статьи на похожую тематику

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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *