Фильтры WordPress. Плагин NS Recent Comments.

4_wp-filters.png

Фильтры Wordpress

Может быть в будущем сделаю плагин на основе следующего скрипта, а сейчас просто хочу посоветовать, как в Wordpress почти не зная программирования на PHP можно легко создать скрипт (плагином в полной мере его назвать нельзя, скорее это фильтр) автозамены символов в тексте.

С чего начать?

Для начала нужно уяснить, что нам нужно. А нам нужно, например, для того, чтобы 4 пробела заменялись на 4 &nbsp; дабы показать отступ. Опять же в тэге <code> мы вставляем кокой-либо листинг и естественно с отступами, чтобы показать вложенность. Эти отступы формируются табами (кнопка [TAB]). Вот и нужно опять же этот TAB заменить на неразрывные пробелы.

Как работает фильтр

Фильтр в Wordpress работает используя функцию add_filter($param1, $param2), где первый параметр функции говорит к какому содержимому применить фильтр (hook), а второй – через какую функцию пропустить это содержимое. Оба параметра – строчные значения. От первого параметра так же зависит будет ли применяться фильтр перед отправкой данных в базу или перед выводом на экран.

Пример


function correct_code($ret)
{
$ret = str_replace("[-SPACE-][-SPACE-][-SPACE-][-SPACE-]", "&nbsp;&nbsp;&nbsp;&nbsp;", $ret);
$ret = str_replace("[-TAB-]", "&nbsp;&nbsp;&nbsp;&nbsp;", $ret);
return($ret);
}
add_filter("the_content", "correct_code");

В примере функция add_filter(), пропускает контент через функцию correct_code(). Причём функция correct_code() получает содержимое в качестве параметра функции, у меня это переменная $ret. А дальше с этой переменной можно делать всё что угодно. В данном случае у меня даны две строки отличающиеся друг от друга тем, что первая заменяет 4 пробела на 4 неразрывных пробела, а вторая заменяет [TAB] на 4 неразрывных пробела. Никакого специального кода для поска [TAB] вводить не нужно, просто поставьте этот [TAB].

Используя эту же функцию, можно добавить автозамену, например, кавычек:


$ret = str_replace("&#8221;", "&quot;", $ret);
$ret = str_replace("&#8220;", "&quot;", $ret);

Эти две строчки заменяют кавычки вида “ и ” на обычные "

Примечание:
Иногда по-невнимательности бывает такая проблема, что фильтр не работает и не заменяет кавычки вида “ ” на ". Это может быть, если вы напрямую скопировали символ наклонной кавычки в исходник поста. Тогда, если вы не хотите редактировать пост, нужно скопировать этот символ в автозамену:


$ret = str_replace("“", "&quot;", $ret);
$ret = str_replace("”", "&quot;", $ret);

И куда её деть?

Куда деть наш код, чтоб работал? Можно кинуть в любой плагин, можно создать отдельный плагин (только незабудьте написать заголовок и активировать этот плагин), а можно кинуть в один из шаблонных файлов, но до вывода контента. Лучше всего куда-нибудь в header.php

Подробнее о фильтрах. [Google перевод]

P.S.

Добавил в проекты новый плагин для Wordpress, который называется NS Recent Comments. Принцип работы почти такой же как и у плагина NS Recent Posts, только на этот раз плагин выводит список последних комментариев, поэтому особо я о нём ничего писать не буду, всю подробную информацию читайте на странице плагина. Рабочий вариант можно увидеть на главной странице журнала внизу.

Дата: 08.08.2007
»
Категории: PHP | Wordpress | Wordpress plugins
Google     

]]> Максим ]]>

Псевдокод: http://maxsite.org/ras04

:)

»

]]> Никита ]]>

Он самый ))

»

]]> sowich ]]>

Очень достойно все объяснено, спасибо за информацию.

»

Напишите комментарий