kvisaz (kvisaz) wrote,
kvisaz
kvisaz

Categories:

Как написать плагин для WordPress

Вещи, которые записываешь, запомнить гораздо легче. Именно поэтому новички говорят чаще, чем профи. Профессионалы же либо молчат, либо смеются, либо заняты делом.

Именно поэтому я решил написать эту статью. Так получилось, что мне понадобился свой плагин Wordpress. До того, как приступить к делу, я очень долго боялся, плакал и занимался прокрастинацией. В этом мне очень помогли длинные и слишком подробные статьи про написание плагинов. На самом деле всё оказалось совсем не страшно.

Как я теперь вижу, плагин для #WordPress можно написать минут за пять. И алгоритм этого написания укладывается ровно в два пункта:
1. Указываем, к чему хотим прицепиться
2. Пишем, что хотим делать с объектом или данными, к которыми прицепились.

Вот как это выглядит в php:

Copy Source | Copy HTML

    </p>
  1. <?php
  2. //1.
  3. add_filter ('the_content', 'MyFunc');
  4. //2
  5. function MyFunc($content){
  6. $mycontent = str_replace(", ", ", епта, ", $content);
  7. $mycontent = str_replace(". ", ", хули. ", $mycontent);
  8. return $mycontent;
  9. }
  10. ?>

Уф, я даже сам не верю. Но я действительно только что набил за пять минут (даже меньше) рабочий плагин к WordPress. Что он делает, можно догадать по названиям переменных. Ладно не буду томить, скажу прямо: он обрабатывает контент ПЕРЕД выдачей поста пользователю, подменяя запятые и точки на запятые и точки с полуматершиной.

Используя этот код как основу, можно сделать более полезные и практичные плагины. К примеру, замену ключевого слова на ключевое слово со ссылкой. Или автозамену для сокращений. В общем, всё, что угодно, где может использоваться функция замены текста.

Первым пунктом здесь работает функция add_filter, в которой первый аргумент – это название объекта или данных, к которым цепляем свою функцию, второй аргумент – название своей функцией. Оба названия – в кавычках.

Есть ещё функция add_action. Она отличается от add_filter тем, что тот работает как фильтр, а add_action позволяет просто запускать любой скрипт в определённый момент.

Синтаксис у обоих функций одинаковый. Что они позволяют цеплять, можно смотреть в Filter_Reference (http://codex.wordpress.org/Plugin_API/Filter_Reference) и Action_Reference (http://codex.wordpress.org/Plugin_API/Action_Reference) соответственно.

Для того, чтобы соответствовать стандартам WordPress, в начале кода надо дописать комментарий с описанием плагина:

/*
Plugin Name: RuMate
Plugin URI: http://www.yoursite.org/
Description: Insert russian dirty language phrases in every posts
Version: 0.2
Author: Kvisaz
Author URI: http://kvisaz.ru
*/

После этого плагин можно копировать в папку plugins, активировать и смотреть на результат. Всё.

Пример до:
Как написать плагин для WordPress

Пример после:
dirty-russian-phrases-screen.png

PS: не тестируйте этот плагин на приличных сайтах.

PPS: при замене на русские буквы на сайтах с кодировкой UTF-8 и включенным сжатием GZIP страницы постов могут перестать отображаться из-за "неправильной компрессии". Это "лечится" отключением GZIP в настройках или написание более правильного плагина. Вообще, если столкнулись с таким сообщением: "Страница, которую вы пытаетесь просмотреть, не может быть показана, так как она использует неверную или неподдерживаемую форму компрессии" - то знайте, что проблема, скорее всего, именно в плагине и в настройках GZIP.

Рассмотрение вопроса совместимости кодировок выходит за рамки этой статьи, тем паче, что главную цель - записать, как пишется плагин - я-то выполнил!

PPPS:
Время написания статьи: 48 минут, включая правку и отправку, написание и тестирования плагина.

Время написания плагина: <5 минут
Время тестирования и поиска временного решения бага с кодировкой: минут 10.


Так сказал Человек-Хэмингуэй
Tags: wordpress, Заметки
Subscribe

Recent Posts from This Journal

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments