Как создать плагин WordPress

Приветствую. Если вы уже продолжительное время используете WordPress, то наверняка пробовали или по крайней мере, читали чужие советы и задумывались о том, что бы добавить собственный код в файл functions.php Однако, вставленные кусок кода так им и останется, со всеми вытекающими последствиями (см ниже). Во многих случаях будет лучше написать собственный плагин, чем просто добавить код в файл functions.php Сегодня будем учиться создавать плагины, ведь на самом деле, это гораздо проще чем вы думаете.
[toc]Когда стоит написать собственный плагин?
Да, иногда можно использовать functions.php, когда вам нужно добавить совсем простую функциональность, которая перекликается с отображением контента, к примеру, так можно добавить дополнительные шрифты. Такие изменения разумеется пропадут, если вы сделаете обновление темы.
Тот же самый код, но обернутый в плагин, уже никак не должен зависеть от темы.
Что понадобится для написания плагина?
Чтоб написать плагин, вам нужно создать файл плагина и добавить в него код, а затем активировать его тем или иным способом. Каждый плагин имеет открывающий код, который закомментирован. А затем уже идет сам код плагина. Если плагин у вас более сложный, или вы хотите разделить его элементы, то вам нужно создать вложенные файлы – дополнительные PHP-файлы, которые вы свяжете с главным файлом плагина. Вы также можете захотеть включить страницы стилей и дополнительные скрипты в ваш плагин. Как сделать все это будет описано ниже.
Вот несколько способов активировать ваш плагин:
С помощью функции
Ваш плагин создает функцию, которую вы потом добавляете в вашу тему туда, где нужно вызвать код внутри функции.
С помощью хука действия (action hook)
WordPress использует сотни «крючков» действий, которые вы можете использовать для вызова кода в функциях, которые вы прописали в своем плагине. Ели ваша тема имеет «крючок» действия, вы можете написать функцию, которую вы потом прикрепите к этому «крючку». Код в вашем плагине будет запущен, когда WordPress загрузит этот «крючок».
С помощью фильтер хука (filter hook)
WordPress также дает возможность использовать множество фильтр-хуков, которые позволяют изменить выводимую информацию. Фильтр-хук отличается от хука действия тем, что он позволяет изменить код, который уже выводится, вместо того, чтоб добавлять новый код. Вы также можете найти фильтр-хуки в вашей теме или другом плагине, который можно использовать для активации кода в вашем собственном плагине.
С помощью шорткода
Ваш плагин может создать шорткод, который затем можно добавить в ваши записи или страницы.
С помощью виджета
Если ваш плагин создает виджет, вы можете активировать его, добавив в виджет-область.
Вступление для плагина
Чтоб создать плагин, вы можете просто создать файл в вашей папке wp-content/plugins со вступительным кодом внутри:
<?php /** * Plugin Name: My plugin's name * Plugin URI: http://premium.wpmudev.org/blog * Description: Add a description of what your plugin does - this will be shown on the plugins admin page. * Version: 1.0 * Author: Rachel McCollin * Author URI: http://rachelmccollin.co.uk */
Вам нужно отредактировать код сверху, добавив вашу собственную информацию.
Сохраните плагин, и он появится на привычной странице с вашими плагинами, где вы сможете его активировать.
Это все, что нужно сделать, чтоб создать плагин. Теперь к нему нужно добавить код. Давайте взглянем на разные способы активации кода в плагине.
Написать функцию для вашего плагина
Самое простое, что вы сможете сделать с плагином, это написать функцию. Затем вы можете вывести функцию, используя хук или напечатав название функции в вашей теме. Скажем, вы хотите создать функцию для кнопки призыва к действию, а затем вывести эту кнопку в разных местах вашей темы.
Функция для этой кнопки выглядит вот так:
function wpmudev_cta() { echo '<div class="cta">'; echo '<p>Call us on 000-0000 or email <a href="mailto:sales@example.com">sales@example.com</a></p>'; echo '</div>'; }
Выше я использовал echo для вызова HTML внутри моей PHP –функции. Если вы хотите добавить много HTML внутри функции и не хотите использовать echo так много, вы можете добавить открывающий и закрывающий PHP-теги внутри вашей функции, вместо этого.
function wpmudev_cta() { ?> <div class="cta"> <p>Call us on 000-0000 or email <a href="mailto:sales@example.com">sales@example.com</a></p> </div> <?php }
Теперь, когда вы захотите добавить вашу кнопку призыва к действию, вам просто нужно добавить функцию в нужные места в файлы шаблона вашей темы, вот так:
<?php wpmudev_cta(); ?>
Так гораздо удобнее, чем просто добавить этот код в вашу тему каждый раз, когда вам нужна кнопка призыва к действию – меньше кода для WordPress и меньше манипуляций –для вас.
Активация функции с помощью хука
Есть альтернатива тому, чтоб прописывать вашу функцию в файлах шаблона вашей темы каждый раз, когда вы хотите использовать эту функцию. Если у вашей темы есть хуки, вы можете прицепить вашу функцию к одному или нескольким таким хукам «крючкам». Или вы можете использовать один из хуков, которые предоставляет сам WordPress или плагин, который вы уже активировали.
Если вы хотите узнать, есть ли у вашей темы хук действия, посмотрите в сайдбаре, который называется mytheme_sidebar, вы сможете прицепить свою функцию к нему, используя функцию add_action():
<?php add_action( 'mytheme_sidebar', 'wpmudev_cta' ); ?>
Функция add_action() имеет два обязательных параметра: Хук, к которому прикрепляется функция, и название функции. Есть также третий опциональный параметр, который представляет приоритетность, согласно которой будет проигрываться ваша функция. Используется, если вы хотите запустить функцию после или перед какой-то другой.
Вы можете прицепить вашу функцию к такому количеству крючков, какому вам хочется. Так что если вы хотите добавить вашу кнопку призыва к действию в сайдбаре, под контентом в вашей теме, используйте крючок mytheme_below_content, как это показано ниже:
function wpmudev_cta() { ?> <div class="cta"> <p>Call us on 000-0000 or email <a href="mailto:sales@example.com">sales@example.com</a></p> </div> <?php } add_action( 'mytheme_sidebar', 'wpmudev_cta' ); add_action( 'mytheme_below_content', 'wpmudev_cta' );
Если вы хотите зацепить код одним из тех хуков, которые предоставляет WordPress, это делается совершенно также. Пример – это создание плагина, который добавляет код Google analytics на ваш сайт, и зацепляется за хук wp_head.
Добавление кода с помощью фильтра работает совершенно также, за исключением того, что вы используете функцию add_filter(). Так что если блок с контентом призыва к действию уже добавлен в тему с использованием фильтра, нужно перезаписать все вот так:
<?php add_filter( 'mytheme_cta', 'wpmudev_cta' ); ?>
Написание плагина для шорткода
Если плагин создает шорткод, вы не проигрываете код, который он предоставляет, используя хук или добавив функцию в файл шаблона вашей темы. Вместо этого вы вставляете шорткод прямо в контент ваших записей.
Так, если вы хотите создать шорткод для кнопки призыва к действию, то нужно записать эту функцию в наш плагин:
function wpmudev_cta_shortcode() { ob_start(); ?> <div class="cta"> <p>Call us on 000-0000 or email <a href="mailto:sales@example.com">sales@example.com</a></p> </div> <?php return ob_get_clean(); } add_shortcode( 'CTA', 'wpmudev_cta_shortcode' );
Здесь уже есть код, который мы уже добавили в функцию, с помощью функций ob_start() и ob_get_clean(). Это позволяет убедиться в том, что HTML в вашем шорткоде выводится в том месте вашего контента, куда вы его добавили: без этого все будет выводится в верхней части экрана.
Функция активируется с помощью функции add_shortcode(), которая является частью Shortcodes API. Функция имеет два параметра: первый – текст нужно будет заключить в квадратные скобки, чтоб шорткод начал работать, и второй – название вашей функции. Так что, чтоб добавить кнопку призыва к действию в контент вашего сайта, впечатайте [CTA].
Написание плагина для виджета
Последний способ активировать код в вашем плагине – это использовать виджет. Теперь же давайте перейдем от активации к добавлению файлов в ваш плагин.
Включение файлов в плагин
Если ваш плагин нуждается в таких добавлениях, как страницы стилей и скрипты или что-то более серьезное, или вы хотите разделить код на блоки, которыми проще управлять, хорошая идея добавить файлы. В этом случае вам нужно положить главный файл плагина в папку в вашей директории wp-content/plugins, вместо того, чтоб класть его прямо в директорию. Ваш файл плагина будет выглядеть точно также, и WordPress сможет найти его.
Мои плагины обычно содержат одну или больше таких папок, включая:
- includes
- styles
- scripts
Включенный файл – это PHP-файл в вашем плагине, который вы хотите держать отдельно от главного файла плагина, с папкой стилей, включающей страницы стилей для оформления кода, который выводится вашим плагином, и папку со скриптами, которая содержит JavaScript, нужные вашему плагину.
Включение PHP-файлов
Чтоб включить дополнительные PHP-файлы, добавьте этот код в самое начало плагина, после открывающего комментария, но перед вашей первой функцией.
include_once( plugin_dir_path( __FILE__ ) . '/includes/filename.php' );
Это будет добавлено в ваш код из включенного файла в нужном месте вашего плагина там, где вы добавили вашу функцию. В некоторых ваших плагинах вы можете захотеть добавить весь ваш код именно в виде включенных файлов, а в главный файл плагина нужно будет добавить только эту функцию include_once.
Вызов страниц стилей
Чтоб вызвать страницу стилей в вашем плагине, вам понадобится корректно поставить ее в очередь, вместо того, чтоб просто включить файл. Так что, если ваш плагин призыва к действию имеет страницу стилей, которая отвечает за внешний вид вашей кнопки, вам нужно добавить ее в ваш плагин вот таким образом.
function wpmudev_cta_register_stylesheet(){ wp_register_style( 'cta_stylesheet', plugins_url( '/styles/style.css', __FILE__ ) ); wp_enqueue_style( 'cta_stylesheet' ); } add_action( 'enqueue_scripts', 'wpmudev_cta_register_stylesheet' );
Если вы вставите этот код в главный файл плагина, страница стилей будет вызываться посредством вызова файла style.css, который находится в папке wp-content/plugins/myplugin/styles. Может вам покажется странным, прицеплять функцию к экшену, который называется enqueue_scripts, но это правильное действие, если дело касается страниц стилей и всех других скриптов.
Вызов скриптов
Вы можете вызывать скрипты практически так же, как и страницы стилей, используя хук enqueue_scripts. Так что если вы хотите добавить скрипт, чтоб анимировать вашу кнопку призыва к действию, вам нужно будет вызвать его в плагине вот так:
function wpmudev_cta_add_script() { wp_register_script('cta_script', plugins_url('scripts/cta-script.js', __FILE__), array('jquery') ); wp_enqueue_script('cta_script'); } add_action( 'wp_enqueue_scripts', 'wpmudev_cta_add_script' );
Это очень сходно с функцией, которую мы уже использовали для страницы стилей, но в функцию register_script() я также добавил третий параметр, которым является JavaScript library (jQuery) и от которого зависит мой скрипт. Проще говоря, если jQuery не активирован, то ничего не будет работать.
Как видите, ничего особо заумного при создании плагина не используется. Во всяком случае, в нашем — простом примере. Надеемся и вы захотите попробовать создать собственный плагин.
Интересное по теме:
Создание виджета с таймером обратного отсчета времени
Как создать виджет с табами для WordPress?
Отличный перевод, спасибо. В рунете так мало инфы по написанию плагинов… Если будет время, напишите небольшую статью-обзор на фреймворк WORDPRESS PLUGIN BOILERPLATE и как им пользоваться!
Спасибо, за статью.
Как в сайдбаре вывести, например «Hello word»?