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

В создание плагина для WordPress нет ничего сложного, основное правило создать папку с файлом, и разместить комментарий внутри файла с плагином.
Все файлы с плагинами лежат в папке /public_html/wp-content/plugins, здесь же мы создадим папку test, и создадим внутри этой папки файл test.php
Внутри файла test.php нужно обозначить наш плагин специальным комментариям, иначе плагин не отобразится на странице в админ.панели.
<?php /* Plugin Name: Test Author: Иванов Алексей Description: Мой первый плагин */
В принципе этого кода достаточно чтобы плагин появился на странице, и его можно было бы активировать.

Plugin Name — название плагина (Обязательный параметр)
Author — Автор плагина
Description — описание плагина
Есть программисты которые разрабатывают плагины на простых функциях, но это не совсем удобно, ведь какая-то из функций может существовать в других установленных модулях WordPress. Поэтому создадим обычный class.
<?php
/*
Plugin Name: Test
Author: Иванов Алексей
Description: Мой первый плагин
*/
class my_first_plugin{
}Теперь самое сложное, а что именно мы будем создавать?
Для wordpress есть огромное кол-во бесплатных плагинов, и создать что-то новое будет довольно проблематично. И тут мне пришло в голову создать плагин на базе класса Mobile Detect, о котором я рассказывал чуть ранее в своей статье.
Что будет делать плагин?
С помощью шорткода наш плагин на мобильном устройстве будет показывать дополнительный текст внутри записи или страницы, а на ПК, этот текст отображаться не будет. Этот же шорткод можно использовать внутри виджетов.
Давайте скачаем class mobile detect и разместим его (файл Mobile_Detect.php) в корне папки нашего плагина.
Теперь нам нужно подключить класс в нашем плагине, и загрузить его в объект $this->device.
<?php
/*
Plugin Name: Test
Author: Иванов Алексей
Description: Мой первый плагин
*/
class my_first_plugin{
public function __construct(){
include_once __DIR__.'/Mobile_Detect.php';
//Вызываем класс если он существует
if(class_exists('Mobile_Detect')){
$this->device=new Mobile_Detect;
//Вызываем функцию load с шорткодом
add_action('init',array($this,'load'));
}
}
В конструкторе мы так же вызовем будущий метод (функцию) load с помощью хука «init», при условие если класс «Mobile_Detect» загружен и существует.
add_action('init',array($this,'load'));Для создания шорткода, в WordPress существует специальная функция «add_shortcode», теперь нам нужно её применить в нашем плагине. Но прежде чем писать код, давайте разберёмся, какие аргументы принимает функция.
add_shortcode('shortcode','function');shortcode -название шорткода, только латинские буквы или цифры (без [] кавычек)
function — функция которая будет вызвана при обработке шорткода
function load(){
add_shortcode('mobile_text',array($this,'add_mobile_text'));
}Наш шорткод будет называться «mobile_text», именно его мы будет подключать в текст записи или страницы вот таким образом:

Функция , которая будет обрабатывать шорткод называется add_mobile_text, которая может принимать два аргумента.
$atts — здесь мы можем передавать различные переменные, но нам он не понадобится
$content — текст который будет показан внутри шорткода (то что нам нужно)
function add_mobile_text($atts,$content){
if($this->device->isMobile()){
return $content;
}
}Обратите внимание на функцию isMobile, она создана внутри класса Mobile_Detect (который мы подключили), и с ей помощью мы проверяем браузер пользователя. Если он зашёл с мобильника, покажем ему текст внутри шорткода.
В массиве $atts мы можем передать другие параметры, и сделать более сложную проверку. Например показывать ли текст на ПК или планшете.
function add_mobile_text($atts,$content){
if($atts['mobile']=='on'){
if($this->device->isMobile()){
return $content;
}
}
elseif($atts['tablet']=='on'){
if($this->device->isTabler()){
return $content;
}
}
elseif($atts['pc']=='on'){
if(!$this->device->isTablet() and !$this->device->isMobile()){
return $content;
}
}
}И конечно шорткод будет немного другой. Отображение на мобильнике и планшете.
[mobile_text mobile='on' tablet=on'' pc='off']Текст на мобильнике и планшете[/mobile_text]
Но я не буду подключать данное условие к нашему плагину, вы же можете поэкспериментировать.
Теперь нужно вызвать наш первый класс, иначе ничего работать не будет.
new my_first_plugin;
Теперь соберём весь код в один:
<?php
/*
Plugin Name: Test
Author: Иванов Алексей
Description: Мой первый плагин
*/
class my_first_plugin{
public function __construct(){
include_once __DIR__.'/Mobile_Detect.php';
//Вызываем класс если он существует
if(class_exists('Mobile_Detect')){
$this->device=new Mobile_Detect;
add_action('init',array($this,'load'));
}
}
function load(){
add_shortcode('mobile_text',array($this,'add_mobile_text'));
}
function add_mobile_text($atts,$content){
if($this->device->isMobile()){
return $content;
}
}
}
new my_first_plugin;
Для проверки плагина, в любом месте страницы или записи, разместите шоркод с текстом, и зайдите на сайт с помощью мобильного телефона.
[mobile_text]Этот текст отображается на мобильном устройстве[/mobile_text]

Понятное дело, что вместо обычного текста можно прописать картинку, баннер, HTML код, и т.д. Ещё можно добавить div со своими стилями, или названием css класса, всё зависит от ваших хотелок.
Многие спросят зачем заморачиваться и подключать дополнительные библиотеки, если можно воспользоваться css стилям типа @media, и скрыть блок с помощью display:none на мобильном устройстве? Но я уже рассказывал этот момент, ведь блок в любом случае будет на странице, только в скрытом виде.

