Плагин
WordPress состоит из трех основных составляющих: Ядро, Темы, Плагины. В этом разделе поговорим о плагинах, рассмотрим как создавать плагин для WordPress и коснемся следующих тем:
- Как создать плагин (заголовки плагина).
- Наиболее лучшие практики.
- Безопасность.
- Инструменты, которые можно использовать для создания плагина.
- Использование встроенных в WordPress API.
- Правильное удаление плагина.
- Перевод (локализация) плагина.
Раздел создается на основе официального руководства по плагинам. Здесь будет вольный перевод + личный опыт.
Что такое плагин?
WordPress сконструирован так, что его можно расширять плагинами.
Это дополнение (пакет), которое расширяет функционал WordPress т.е. создает дополнительный функционал поверх того, что уже предлагает WordPress.
Плагин состоит из одного или нескольких файлов. Обычно это: главный файл плагина и другие .php, .css, .js файлы.
Возможности плагинов по сути безграничны, например:
-
Можно создать плагин, который добавит новое поле для комментариев и будет записывать данные в таблицу wp_commentmeta.
-
Или с помощью произвольных типов записей, можно написать плагин тикет-системы с уведомлениями по электронной почте, статусами тикета и т.д.
- Или можно значительно расширить возможности WordPress, сделав его e-commerce системой (например плагин woocommerce).
Зачем нужны плагины?
Плагины позволяют расширять функционал WordPress без изменения кода ядра WordPress.
Существует одно важное правило в разработке WordPress - не касайтесь ядра. Это означает, что нельзя редактировать файлы самого WordPress, когда нужно что-то изменить или добавить.
Это важно потому что, при обновлении, WordPress заменяет все свои файлы и любые изменения этих файлов будут потеряны. Поэтому любая функциональность, должна быть добавлена через плагины, MU плагины или через тему (шаблон).
Из чего состоит плагин?
В простейшем случае плагин WordPress — это один PHP файл со специальными комментариями-заголовками. Минимум что нужно для плагина: правильный заголовок в главном файле и код, который будет что-либо делать.
Однако, чаще всего плагин состоит из нескольких файлов.
После установки WordPress, в папке плагинов находится демонстрационный плагин: Hello Dolly. Этот плагин состоит из одного файла /plugins/hello-dolly/hello.php
. «Hello Dolly» не делает ничего полезного, а просто показывает слова из известной песни в уведомлениях админки WordPress.
Вот его код:
GitHub<?php /** * @package Hello_Dolly * @version 1.7.2 */ /* Plugin Name: Hello Dolly Plugin URI: http://wordpress.org/plugins/hello-dolly/ Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page. Author: Matt Mullenweg Version: 1.7.2 Author URI: http://ma.tt/ */ function hello_dolly_get_lyric() { /** These are the lyrics to Hello Dolly */ $lyrics = "Hello, Dolly Well, hello, Dolly It's so nice to have you back where you belong You're lookin' swell, Dolly I can tell, Dolly You're still glowin', you're still crowin' You're still goin' strong I feel the room swayin' While the band's playin' One of our old favorite songs from way back when So, take her wrap, fellas Dolly, never go away again Hello, Dolly Well, hello, Dolly It's so nice to have you back where you belong You're lookin' swell, Dolly I can tell, Dolly You're still glowin', you're still crowin' You're still goin' strong I feel the room swayin' While the band's playin' One of our old favorite songs from way back when So, golly, gee, fellas Have a little faith in me, fellas Dolly, never go away Promise, you'll never go away Dolly'll never go away again"; // Here we split it into lines. $lyrics = explode( "\n", $lyrics ); // And then randomly choose a line. return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] ); } // This just echoes the chosen line, we'll position it later. function hello_dolly() { $chosen = hello_dolly_get_lyric(); $lang = ''; if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) { $lang = ' lang="en"'; } printf( '<p id="dolly"><span class="screen-reader-text">%s </span><span dir="ltr"%s>%s</span></p>', __( 'Quote from Hello Dolly song, by Jerry Herman:', 'hello-dolly' ), $lang, $chosen ); } // Now we set that function up to execute when the admin_notices action is called. add_action( 'admin_notices', 'hello_dolly' ); // We need some CSS to position the paragraph. function dolly_css() { echo " <style type='text/css'> #dolly { float: right; padding: 5px 10px; margin: 0; font-size: 12px; line-height: 1.6666; } .rtl #dolly { float: left; } .block-editor-page #dolly { display: none; } @media screen and (max-width: 782px) { #dolly, .rtl #dolly { float: none; padding-left: 0; padding-right: 0; } } </style> "; } add_action( 'admin_head', 'dolly_css' );
Нагрузка плагина
Не верьте, когда где-то пишут, что плагины нагружают систему - это не так!
Подключение плагина само по себе ничем не отличается по нагрузке от подключения обычного PHP файла. Поэтому грамотно созданный плагин не может нагружать систему больше чем, если бы вы подключили тот же код напрямую в PHP.
Миф, что плагины нагружают систему родился, потому что очень много плагинов для WordPress написаны новичками неграмотно. Но это не значит, что все плагины создают излишнюю нагрузку. Просто нужно пользоваться плагинами от опытных/хороших разработчиков.
Техническое объяснение почему плагины не нагружают систему, читайте в заметке: «Тормозят ли плагины скорость работы WordPress?»
--
Этот раздел неполный. Здесь только основные вещи связанные с созданием плагина.