Хуки в WordPress
Продолжая серию статей, по написанию плагинов для WordPress хочу показать еще несколько полезных фрагментов кода.
Начинаем, как и в предыдущих статьях. Создаем файл в папке с плагинами и называем его mytestplugin.php. В созданный файл добавляем код :
1 2 3 4 5 6 7 8 9 10 |
<?php /* Plugin Name: Название плагина Plugin URI: https://страница_с_описанием_плагина_и_его_обновлений Description: Краткое описание плагина. Version: Номер версии плагина, например: 1.0 Author: Имя автора плагина Author URI: https://страница_автора_плагина */ ?> |
Сейчас мы вставили тот минимум, который нужен для инсталляции и активации плагина, далее часто после разработки необходимо подумать о лицензии на него. Многие разработчики используют лицензию GPL или сходную с ней. Для описания лицензии добавляем следующие строки в файл плагина:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php /* Copyright ГОД ИМЯ_АВТОРА_ПЛАГИНА (email: E-MAIL_АВТОРА) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ ?> |
Переходим к программированию плагинов и основным важным понятиям.
Рассмотрим основную концепцию разработки плагинов, которая работает на основе зацепок или их еще называют хуками (hook). Принцип действия хуков очень простой, каждая из элементарных функций WordPress перед тем как вернуть какой-то результат своей работы или совершить какое-то важное действие (запрос к базе данных, обработка данных, вывод на экран), пытается использовать дополнительные строки кода предназначенные для нее в файлах плагинов.
Пример использования хуков в WordPress
1 2 3 4 5 6 7 |
<?php function get_the_title( $id = 0 ) { … … return apply_filters( 'the_title', $title, $post->ID ); //Пример зацепки для функции get_the_title(); } ?> |
Пример использования такой зацепки в плагине WordPress
1 2 3 4 5 |
<?php … add_filter( 'the_title', 'my_own_function_for_title' ); //Так выглядит регистрация в файле плагина новой функции my_own_function_for_title(); с дополнительным инструкциями для зацепки 'the_title'. … ?> |
Пример работы функциией my_own_function_for_title()
1 2 3 4 5 6 7 8 9 10 |
<?php … /* Так в плагине может выглядеть функция, изменяющая заголовки Wordpress. В данном случае она заставляет выводить каждое слово заголовка с большой буквы. */ my_own_function_for_title( $title ){ $title = ucwords($title); return $title; } … ?> |
Все зацепки в WordPress делятся на две категории — Фильтры и Действия. (filters и actions соответственно).
Первые зацепки фильтры (filters) действительно предназначены для «фильтрования» (изменения) любых данных, перед тем как они будут выведены на странице или добавлены для хранения в базу данных. Это фильтрация спама, ошибок или просто ошибочного ввода в формах.
Вторые (действия, actions) предназначены для замены различных действий ядра вашими действиями (например, изменения строки запроса к базе данных), в программировании такое изменение действий базового функционала ещё называют перегрузкой.
В WordPress есть свой API по работе с плагинами и ряд готовых зацепок. Об всех стандартных зацепках можно почитать в официальной документации WordPress Plugin API правда пока на английском. Причем если вы нашли место, где такой хук просто необходим, то можно его предложить и о том как это сделать написано тут.
Информация взята с официальной документации и немного обработана мной ). Удачи в разработке собственных плагинов на WordPress. Следите за новыми статьями.

/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.