Wordpress
Опубликовано в Zaandr

Добавляем произвольные поля в rss ленту


Я думаю многие сталкивались с такой ситуацией: при создании блога на wordpress приходилось прибегать к произвольным полям. Одна проблема — произвольные поля не выводятся в rss ленте. Сегодня я объясню, как это можно легко исправить.

Мы будем рассматривать вариант с использованием плагина Ozh Better Feed. Вы же используете этот плагин?

Нет? Не буду писать прелести работы с плагином, здесь давно всё замечательно описано. Советую, кстати подписаться на этот блог. Там много интересного по плагинам для wordpress.
Итак, я использую произвольные поля для вывода изображений для каждой записи. Попытаемся добавить такое изображение в rss. Для этого нам придётся подкорректировать код плагина. Это можно сделать прямо из панели администратора (Плагины -> Редактор). Единственный минус этого метода, что при обновлении плагина изменения нужно будет вносить заново. Но Ozh Better Feed не обновлялся достаточно давно, функционал полностью завершен.
Однако я бы посоветовал внести в название некоторые коррективы, чтобы не забыть что мы изменяли код. Открываем файл wp_ozh_betterfeed.php и дописываем после слово Description: , что код плагина модифицирован. Например, я написал так:

5
Description: [Не обновлять. Фикс в inc/feed.php 67-72]Your feeds, on steroids. Add a feed footer with a copyright, "Add to delicious", the number of comments... Add anything to your feed. <strong>For WordPress 2.8+</strong>

Теперь переходим к изменениям, которые позволяет нам выводить эти самые произвольные поля. Открываем файл inc/feed.php. Находим строчку

68
return (wp_ozh_betterfeed_detokenize($content));

И ВЫШЕ добавляем следующий код

// изменения для вывода произвольного поля moe_proizvolnoe_pole 
if ( get_post_meta($post->ID, "moe_proizvolnoe_pole", true) ) {
$moe_proizvolnoe_pole = '<img src="'.get_option('siteurl').get_post_meta($post->ID, "moe_proizvolnoe_pole", true).'" title="'.get_the_title().'"><br>';
$content = $moe_proizvolnoe_pole.$content;
}

Разбираем наш код. Он практически идентичен тому, что мы используем для вывода в шаблоне темы.
Произвольное поле, которое мы собрались выводить носит название moe_proizvolnoe_pole,его нужно изменить на своё уникальное во всём коде. Итак по коду.
Условные комментарии — ставьте их. Так вам будет проще найти место где вы вносили изменения.
Строчкой if ( get_post_meta($post->ID, "moe_proizvolnoe_pole", true) ) мы проверяем, что данное произвольное поле есть у данной записи. Если его нет ничего не произойдет.
Следующей строчкой мы создаем переменную и записываем в неё значение нашего произвольного поля. Так как в данном случае это картинка. Я обрамляю её в html теги img и прописываю title со значением имени записи. (Если вы не поняли, что написано в этом абзаце вам надо подучить html)
Функция get_the_title() выводит название записи. Мы можем использовать любые функции wordpress, которые определены в цикле вывода записей.
Строчка $content = $moe_proizvolnoe_pole.$content; отвечает за вывод нашей переменной, содержащей значение произвольного поля перед основным содержанием записи. Если вам нужно добавить в конец. замените строчку на

$content = $content.$moe_proizvolnoe_pole;

Вот в принципе и всё, даже если вы незнакомы с php и html, я думаю, с этим реально разобраться. Если что — спрашивайте в комментариях.

Всем кто ведет свой блог будет полезно почитать о бесплатных методах продвижения блогов в примерах.


Показать комментарии
  • Ganin

    а где у тебя кнопка фидбернера? пришлось искать кнопу в низу поста на ленту рсс

  • @Ganin
    руки не дошли, сейчас разберусь с дуфолу-коментирование (пока ссылки не работают, но они есть)
    а вообще подписать на rss есть большая кнопка с верху рядом с логотипом, там даже подписано.

  • Ganin

    она такая большая и такая заметная что я ее и не увидал :) исключительно как элемент дизайна выглядит.