WP Экспресс

Как создать плагин 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
 */

Вам нужно отредактировать код сверху, добавив вашу собственную информацию.

Сохраните плагин, и он появится на привычной странице с вашими плагинами, где вы сможете его активировать.

Create a WordPress Plugin 1

Это все, что нужно сделать, чтоб создать плагин. Теперь к нему нужно добавить код. Давайте взглянем на разные способы активации кода в плагине.

Написать функцию для вашего плагина

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

Функция для этой кнопки выглядит вот так:

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?

Метки

Похожие

2 Комментов

  1. Отличный перевод, спасибо. В рунете так мало инфы по написанию плагинов… Если будет время, напишите небольшую статью-обзор на фреймворк WORDPRESS PLUGIN BOILERPLATE и как им пользоваться!

    Спасибо, за статью.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Back to top button