В прошлой статье мы рассказали вы можете управлять футером ленты RSS в WordPress с помощью известного плагина под названием RSS Footer от Joost. Плагин конечно хорош, но ограничен в возможностях. Вы можете только лишь добавить текст в футер, и это один и тот же текст для всех записей. Что делать, если потребуется вывести различный текст для каждой записи в вашей ленте RSS? Если нужно указать другой заголовок для определенных записей в ленте RSS? А если потребуется вывести произвольное поле? Поэтому в сегодняшней статье мы покажем вам как добавить любой тип контента в вашу ленту RSS в WordPress. Этот хак позволит вам полностью контролировать и управлять вашей лентой RSS в WordPress и делать с ней вы сможете все, что угодно.
Примечание: Этот хак не для новичков. Рекомендуется только пользователям, свободно управляющимся с правками файла functions.php и имеющими хотя бы базовые знания php. Новичкам лучше использовать плагин, упомянутый в статье выше, либо обратиться к специалисту по поводу реализации этой фичи.
1. Добавляем произвольные поля в футер вашей RSS ленты в WordPress
В этом первом примере мы покажем вам как можно использовать произвольные поля для вывода определенного текста/объекта в вашу RSS ленту в WordPress. Способ позволит вам отображать различный текст, объявления, изображения и все, что угодно, для каждой записи. Для начала открываем файл functions.php и вставляем следующий код:
function devise_postrss($content) { global $wp_query; $postid = $wp_query->post->ID; $coolcustom = get_post_meta($postid, 'coolcustom', true); if(is_feed()) { if($coolcustom !== '') { $content = $content."<br /><br /><div>".$coolcustom."</div> "; } else { $content = $content; } } return $content; } add_filter('the_excerpt_rss', 'devise_postrss'); add_filter('the_content', 'devise_postrss');
Расскажем подробнее, как работает этот код. Мы создали функцию под названием devise_postrss, которая выполняет глобальный запрос wp_query поиска в каждой записи на предмет того. существует ли произвольное поле с именем “coolcustom” и задано ли ему значение. Если значение задано, то функция отображает его после контента записи. Если же произвольного поля не существует, то функция по-умолчанию выводит только лишь контент и больше ничего. Мы использовали переменную $content для вывода контента. Также мы использовали функцию if(is_feed) и добавление произвольного текста к основному контенту, что вы можете увидеть во втором фильтре. Но произвольный текст будет отображаться только в ленте благодаря использованию функции if(is_feed). Именно такая реализация позволит избежать проблем совместимости.
Некоторые из вас могут сказать, что топлагин RSS footer делает то же самое, что и эта функция. И ДА и НЕТ. Да, мы добавляем код в футер записи, однако этот текст не то же самый текст для каждой записи. Он различен, потому как вы указываете различный текст для каждой записи с помощью произвольных полей.
Продолжение статьи читайте по ссылке Добавляем контент и полностью управляем лентой RSS в WordPress. Эпизод 2