Пишем wordpress плагин hello_world
Давно я уже хотел подойти к этой теме – все руки не доходили. Вот, наконец, появилось время заняться детальным изучением wordpress`а. Начать я решил с написания wordpress плагинов.
Прежде чем начать писать плагин, нужно сделать как минимум две вещи: |
Итак, мой первый wordpress плагин будет выводить надпись hello, world после каждого заголовка поста.
А называться он будет hello_world
Кстати, наравне с прочтением документации по основным моментам написания плагинов для wordpress, я бы вам посоветовал заглянуть в один-два простеньких плагина, которыми вы пользуетесь. Так как то, что они делают вы уже знаете – вам будет проще разобраться в их коде.
Сейчас постараюсь в общих чертах описать логику работы плагина.
В wordpress имеется механизм hook`ов (перехватов) действий стандартных фукнций, используя который можно переопределить некоторые функции на свои собственные.
Этот механизм реализован через функцию:
add_action(‘old_action’, ‘new_action’).
В этой обработчик функции old_action() заменяет на функцию new_action(). Другими словами, если после этого вызвать old_action(), то автоматически будет выполнена функция new_action(). Все очень просто!
Другой часто используемый механизм в плагинах wp – фильтры.
В отличие от hook`ов, фильтры не заменяют собой старую функцию полностью, а присоединяются к ее выходу.
Механизм фильтров реализован через функцию:
add_filter(‘old_action’, ‘new_filter’);
Здесь для функции old_action() добавляется фильтр new_filter(), который будет вызван после выполнения old_action и которому в качестве параметров будет передано то, что возвратила функция old_action().
Сложноватое предложение получилось. Покажу лучше на диаграммах:
До применения фильтров и hook`ов функция old_action() работает так:
После add_action(‘old_action’, ‘new_action’):
А после добавления фильтра add_filter(‘old_action’, ‘new_filter’) так:
Собственные функции hook`ов и фильтров нужно писать внутри файла плагина.
Теперь вернемся к моему плагину hello_world
В самом его начале следует указать некоторые служебные вещи:
Plugin Name: Hello World
Plugin URI: https://i-novice.net/wpplugins/my_hello_world.zip
Author: Novice
Author URI: https://i-novice.net/
*/
Первая строка указывает wordpress`у, что плагин называется Hello World.
Вторая – что скачать плагин можно по адресу https://i-novice.net/wpplugins/my_hello_world.zip
Третья – имя автора, а четвертая – адрес его домашней страницы [автора].
Дальше объявляем текстовую переменную с текстом “Hello, world!”.
Создаем функцию фильтра:
global $hello_world;
echo $title.' -> '.$hello_world;
}
И добавляем соединяем этот фильтр с нужной функцией:
Вот и все Теперь осталось только закинуть этот файл в папку с плагинами и активировать его.
Полностью плагин вы можете скачать здесь: Скачать
Кстати говоря, помимо функций добаления фильтров и hook`ов, есть функции их удаления.
Так можно убрать перехватчик для old_action() который мы поставили:
remove_action(‘old_action’,’new_action’)
А так можно отсоединить фильтр:
remove_filter(‘old_action’,’new_filter’).
Это может пригодиться, например, если вам нужно отключить фильтры других плагинов для какого-то действия, прежде чем поставить свой. И т.д.
На сегодня все. Удачи.
О, Спасибо, щас сам попрактикуюсь ))
Но, вообщем-то function hello_world() довольно таки проста, мы просто соединяем две переменные…Это хорошо:)
Краткость - сестра таланта. Молодец, что не растягиваешь посты. Доходчиво, зная PHP и читая эти посты я все запомнил минут через 15 Спасибо
А таким образом можно любые функции перехватывать?
Или только некоторые?
Только те, в которых в wp встроен этот механизм. Только некоторые другими словами.
Мерси за статью, добрался до написания плагинов, буду перенимать опыт 😉
Спасибо тебе. С твоими уроками все очень быстро понимаеш.
А hello, world - это конечно классика
А как модернизировать ваш плагин для вывода аникдотов в конец каждово поста
Спасибо за статью. Обязательно попробую написать для себя
плагин. Все ясно изложено.
Скажите, а каким образом выводить текст скажем по такой схеме как в NGGALLERY?
Я имею ввиду с использованием [nggallery id=1]
Я хочу чтоб у меня в тексте были вставки типа [helloworld] и чтоб их кушал вордпресс.
Статья хорошая - спасибо!
А как изменить содержание мета и link-тегов?
Димтрий тут пользуемся Шорт кодами.
Самый простой пример.
Открываем functions.php файл и пишем слудующий код
function hello_world() {
return ‘hello-world';
}
add_shortcode(‘hw’, ‘hello_world’);
(не забываем в начале и в конце ставить )
“‘hw'” это и есть нашь шорт-код.
теперь при каждом удобном случае когда нам надо вставить в статье или в новости “hello-world” мы просто пишем “[hw]”
(не забываем в начале и в конце ставить )
Админ, а почему режет пхп ?
Всем привет. А может кто-нибудь подскажет:
я хочу написать плагин и вшить его в свой шаблон, ну чтобы не ложить в папку с плагинами каждый раз, создавая новый сайт, а просто устанавливать эту тему. как это организовать?
спасибо
Привет!
А как добавить фильтр после регистрации? Мне нужно чтобы когда пользователь зарегистрировался, то в новую таблицу в БД записывались некоторые данные.
Кстати, к может есть где то справочник с описанием всех функций?
Спасибо!
Спасибо. Очень хорошая статья. Мне все сразу стало понятно.