Пишем wordpress плагин hello_world

Давно я уже хотел подойти к этой теме – все руки не доходили. Вот, наконец, появилось время заняться детальным изучением wordpress`а. Начать я решил с написания wordpress плагинов.

Прежде чем начать писать плагин, нужно сделать как минимум две вещи:
1. Определиться с тем, что будет делать плагин.
2. Придумать плагину название.

Итак, мой первый 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: http://i-novice.net/wpplugins/my_hello_world.zip
Author: Novice
Author URI: http://i-novice.net/
*/

Первая строка указывает wordpress`у, что плагин называется Hello World.
Вторая – что скачать плагин можно по адресу http://i-novice.net/wpplugins/my_hello_world.zip
Третья – имя автора, а четвертая – адрес его домашней страницы [автора].

Дальше объявляем текстовую переменную с текстом “Hello, world!”.

$hello_world = "Hello, world!";

Создаем функцию фильтра:

function hello_world($title) {
    global $hello_world;

    echo $title.' -> '.$hello_world;
}

И добавляем соединяем этот фильтр с нужной функцией:

add_filter('the_title', 'hello_world');

Вот и все :) Теперь осталось только закинуть этот файл в папку с плагинами и активировать его.

Полностью плагин вы можете скачать здесь: Скачать

Кстати говоря, помимо функций добаления фильтров и hook`ов, есть функции их удаления.

Так можно убрать перехватчик для old_action() который мы поставили:

remove_action(’old_action’,'new_action’)

А так можно отсоединить фильтр:

remove_filter(’old_action’,'new_filter’).

Это может пригодиться, например, если вам нужно отключить фильтры других плагинов для какого-то действия, прежде чем поставить свой. И т.д.

На сегодня все. Удачи.

Популярность: 6%

Читайте также:


 #  #  #  #  #  #  #  #  #  #

4 Ответов на “Пишем wordpress плагин hello_world”

  1. rusik
    Июль 13th, 2008

    О, Спасибо, щас сам попрактикуюсь ))
    Но, вообщем-то function hello_world() довольно таки проста, мы просто соединяем две переменные…Это хорошо:)

  2. grimweb
    Март 29th, 2009

    Краткость - сестра таланта. Молодец, что не растягиваешь посты. Доходчиво, зная PHP и читая эти посты я все запомнил минут через 15 :) Спасибо :)

  3. Александр
    Июнь 28th, 2009

    А таким образом можно любые функции перехватывать?
    Или только некоторые?

  4. cryptus
    Июнь 30th, 2009

    Только те, в которых в wp встроен этот механизм. Только некоторые другими словами.

Оставить комментарий


Объявления:
cialis.panerai swiss replica, swiss replica, breitling fake watch.replica watches, swiss replica watches, cartier replica watches