single.php

include (TEMPLATEPATH . '/searchform.php');
if (have_posts()) : while (have_posts()) : the_post();
the_time('F j, Y'); сентябрь 24, 2011
the_author(); Yantar
the_category(', '); wordpress, для продолжающих
the_ratings();
раз снежинкадва снежинкатри снежинкаа я четвертую сорву!отличная снежинка (голосов: 24)
UTW_ShowTagsForCurrentPost("commalist"); Ключевые темы: No Tags
show_post_count(); Просмотров: 12618

the_content();

Т.к. фильтры в вордпрессе появились довольно давно, написано про них уже немало. Но статьи на эту тему обычно такие длинные, что к концу забываешь ее начало. Мне фильтры нужны периодически, поэтому каждый раз разбираться с нуля - не с руки. Так что попробую сделать небольшую схематическую шпаргалку на эту тему, а дальше - гугл в помощь.
Итак, фильтры нужны, если необходимо исправить какую-то информацию, отдаваемую движком. Лезть в код движка - последнее дело, при первом же обновлении все затрется. А фильтр написал один раз, поместил в файл functions.php своей темы, и спишь спокойно.

Ну вот, например, мне понадобилось изменить ссылку, которую отдает дефолтный виджет Recent Comments (Последние комментарии). Он ставит на статью ссылку вида сайт/запись/#id_комментария - а я не хочу по каким-то причинам это id_комментария.

Итак, шаг 1. Лезем в код виджета (дефолтные виджеты располагаются в файле wp_includes/default_widgets.php. Находим там строчку, отвечающую за ссылку на комментарий:
get_comment_link($comment->comment_ID).

Шаг 2. Ищем эту самую функцию get_comment_link - и в конце ее видим строчку
return apply_filters( 'get_comment_link', $link . '#comment-' . $comment->comment_ID, $comment, $args );
Это оно! Именно здесь движок вордпресса позволяет нам что-то сделать с возвращаемым функцией значением.

Шаг 3. Немедленно этим пользуемся: в файл темы functions.php запишем:
add_filter('get_comment_link', 'my_own_comment_link');

Шаг 4. Пишем функцию, которая будет подсовывать новое значение виджету:
function my_own_comment_link($link){
    return strstr($link,'#',true); //берет строку вида "раздва/три/#четыре" и отсекает весь хвост, который начинается со знака "#"
}

Ну вот и все, подробности в Кодексе. Надеюсь, в следующий раз мне не придется снова тратить три часа, чтобы вникнуть во все это.

Насколько этот текст оказался полезным?
раз снежинкадва снежинкатри снежинкаа я четвертую сорву!отличная снежинка (голосов: 24)
comments_template();

Комментарии (3) к записи «Коротко о том, как использовать фильтры в WordPress»

  1. Кот Шрёдингера Says:

    А я коды не трогаю вообще, так как не понимаю ничего и боюсь порушить всё. Только с помощью встроенного стоп-листа настроил стоп-слова и урлы, которые не должны попадать в комментарии. Мусора на почту стало приходить значительно меньше.

  2. Alexpts Says:

    Суть самих фильтров делает движок реально гибким, жаль только что несколько лет назад таких материалов доступных не было нигде. Самому было сложно разбираться с всем этим. Вообще для всех начинающих программиостов это самое то, просто, коротко, понятно! :)

  3. KasandRa Says:

    секс в нижнем новгороде http://bludnn80.livejournal.com/

Есть комментарии?

show_manual_subscription_form();

Subscribe without commenting

endwhile;