Добрый вечер, дорогие читатели. Сегодняшней публикацией продолжаю пополнять копилку знаний о WordPress на моем блоге. Не одна из предыдущих публикаций на эту тему не осталась без внимания, а значит у вас есть интерес в этой области. И поэтому я не могу не удовлетворить его! Приятного вам изучения. Дальше очень много нужной информации.
RSS — это одна из тех технологий которая очень проста и в то же время просто незаменима. Сегодня RSS это де факто общепринятый стандарт для блогов, и используется повсеместно. Ну а так как большинство блогов в сети построено на WordPress, мы и рассмотрим все примеры применимо к данному движку. Некоторые фишки давно известны, но я уверен, что этот список поможет вам использовать свой RSS в WordPress намного эффективнее, и все это без использования плагинов!
Как и в других моих постах про WordPress хочется построить описание в виде «проблема-решение-описание». Это самый оптимальный вариант описания таких вещей. Потому что вы будете знать, не только как это делается, но и почему делается именно так, а при желании и под себя перестроить.
Пожалуй, будем приступать.
1. Настраиваем время появление поста в RSS ленте, вывод RSS с задержкой
Проблема: Случалось ли у вас когда-нибудь такое, что вы опубликовали пост, и только потом заметили ошибку? Конечно, можно все исправить, но есть небольшая проблемка — пост уже попал в RSS-поток с ошибкой. Чтобы избежать таких проблем есть хороший рецепт – сделать задержку между публикацией поста на блоге и появлением его в RSS-ленте.
Решаем проблему: Чтобы решить эту проблему, нам необходимо вставить следующий код в файл function.php нашей темы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
function publish_later_on_feed($where) { global $wpdb; if ( is_feed() ) { // получаем текущее время $now = gmdate('Y-m-d H:i:s'); // задержка $wait = '5'; // integer $device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait "; } return $where; } add_filter('posts_where', 'publish_later_on_feed');
Дополнение: В данном коде выставлена задержка между публикацией поста и обновлением RSS-потока в 5 минут. Для этого определена переменная $wait. Вы можете изменить значение по своему усмотрению.
2. Переадресация RSS фида WordPress на фид из FeedBurner
Проблема: Большинство блогеров-новичков обычно начинают пользоваться сервисом FeedBurner только после того, как увидят установленный счетчик подписчиков на других блогах и представляют как это полезно и круто. Они регистрируются, устанавливают счетчик, но существующие подписчики уже подписаны на стандартный WordPress RSS-фид. Да еще и некоторые новые посетители продолжают подписываться на него.
Проблема №2: Если вы часто меняете темы оформления блога, вам необходимо будет постоянно заботиться о том, чтобы заменить стандартную функцию bloginfo (’rss2_url’) на адрес вашего FeedBurner канала.
Решаем проблему: Решение обоих проблем совсем не сложное, мы будем использовать редирект на сервере.
Добавляем следующий код в файл .htaccess в корневой директории и сохраняем
# temp redirect wordpress content feeds to feedburnerRewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/alaev/TxUH [R=302,NC,L]
Дополнение: Не забудьте изменить адрес канала на свой. Теперь, когда кто-нибудь нажмет на ссылку вида http://www.yourblog.com/feed он будет перемещен на http://feeds.feedburner.com/yourblog. Теперь вы никогда не потеряете своих подписчиков. Даже если будете менять тему оформления по десять раз на дню, вам не придется снова и снова вручную менять адрес RSS-канала.
3. Вставляем рекламу, картинки (или еще что-нибудь) в RSS-канал
Проблема: Монетизация RSS-ленты уже стала обыденной вещью, особенно за рубежом, и многие блогеры используют эту тактику для увеличения своих доходов. FeedBurner может вставить рекламу AdSense в ленту, но есть некоторые ограничения по подписчикам, чтобы иметь такую возможность. Да и вставить что-то другое кроме AdSense не получится, а это неудобно.
Решаем проблему: Всегда есть возможность вставить что угодно и куда угодно =) Вот, например, вы можете вставить ссылку на что-нибудь «вкусненькое» только для своих подписчиков.
Для этого требуется добавить следующую функцию в файл вашей темы functions.php
А вы уже прокомментировали мои фотографии?
'; return $content; } add_filter('the_excerpt_rss', 'insertAds'); add_filter('the_content_rss', 'insertAds'); ?>
Дополнение: Существует много различных способов добиться нужного результата, но они требуют вмешательства в код. Этот же способ использует только функцию add_filter () для вставки нужного элемента без необходимости править код движка.
4. Форматируем правильно изображения для RSS-ленты
Специально походил сейчас по блогам и таки нашел у нескольких человек эту проблему. Смотрите, проблемный участок я пометил красным.
А ведь гораздо красивее было бы сделать так
Или так
Проблема: Достаточно много времени все мы тратим на форматирование текста и изображений в записи на блоге. На самом блоге это может выглядеть хорошо, а вот как это будет выглядеть в RSS-ридере? Вы это проверяете? А стоит иногда это делать.
Решаем проблему: Чтобы разобраться с этой проблемой добавляем к изображению параметр style.
Дополнительно: padding:0 10px 5px 0; каждый из четырех параметров означает отступ начиная с верхнего заканчивая левым краем, по часовой стрелке. Следовательно в примере будет отступ для картинки 10px справа и 5px снизу.
5. Предоставьте вашим читателям RSS подписку на комментарии
Проблема: Когда к какому-то из постов оставлено и до сих пор пишется очень много комментариев, читателям будет очень сложно следить за развитием событий. В большинстве тем оформления данная фишка не предусмотрена, но сам WordPress имеет востренную функцию, которая позволит организовать RSS-ленту комментариев к каждому посту.
Решаем проблему: Решение тут совсем простое, никаких хаков не потребуется. Достаточно добавить функцию comment_rss_link () в вашу тему. Смотрим следующий код:
6. Исключаем определенные категории из RSS-ленты
Проблема: Есть ли у вас на блоге категория или даже несколько категорий, которые вы бы не хотели включать в RSS? Может быть, эта категория с рекламными обзорами или вашими личными новостями, которая не интересна ценителям основного контента? Так что идея НЕ включать ее в общую ленту выглядит отличной!
Решаем проблему: Ниже описан алгоритм действий, который поможет исключить произвольную категорию из ленты:
- Вычисляем ID ненужной категории. Его вы можете узнать в настройках самой категории
- Теперь идет в редактирование файла вашей темы functions.php
- Вставляем в файл следующий код и сохраняем
function myFilter($query) { if ($query->is_feed) { $query->set('cat','-5'); //Не забудьте вставить свой ID ^_^ } return $query; } add_filter('pre_get_posts','myFilter');
Дополнительно: Не забудьте в коде заменить значение на ваш ID. Тут так же используется полезная функция add_filter () применимо к pre_get_posts ().
7. Выводим любую RSS-ленту на WordPress блоге
Проблема: Может быть у вас несколько блогов? Или даже у вас есть тематический форум? Тогда вам наверняка захочется сделать вывод последних новостей на своем блоге.
Решаем проблему: Все это можно решить плагинами, но мы четко решили не пользоваться ими. Да и к тому же WordPress имеет встроенный RSS-ридер который можно использовать для вывода новостей.
Идем в редактирование шаблона и в нужном месте (например, в сайдбаре или в футере) вставляем следующий код:
Дополнительно: Первое что мы делаем, это подгружаем стандартный rss.php. Этот файл нам позволяет использовать функцию wp_rss (), которая имеет два параметра: адрес rss-потока и количество выводимых элементов.
8. Используем отдельные RSS-ленты для разных категорий
Проблема: Некоторые блоги ведутся авторами, которые интересуются различными темами, иногда не связанными друг с другом. Например, программирование, веб-дизайн, блоггинг, seo и т.д. А что если читателю интересна только одна из этих тем? В этом случае стоит задуматься над тем, чтобы выводить новости для каждой категории отдельно.
Решаем проблему: Представьте, что вы хотите подписаться только на категорию WordPress, которая имеет следующий адрес:
http://alaev.info/blog/category/wordpress
Чтобы получить адрес RSS-ленты для данной категории необходимо добавить только /feed в конце url’а, вот так:
http://alaev.info/blog/category/wordpress/feed
Очень просто, не так ли? Но в то же время очень полезно, по-моему.
9. Выводим список RSS-подписок по категориям
Проблема: Если вам понравился предыдущий пункт, вам наверняка приглянется и этот. Сейчас мы займемся выводом названий категорий для подписки и картинки RSS.
Решаем проблему: Открываем необходимый файл вашей темы оформления, находим подходящее место и вставляем следующий код:
Дополнительно: Этот метод использует старую добрую функцию wp_list_categories (). Она содержит два параметра: feed_image – путь к изображению отображения фида и, собственно, параметр определяющий формат самого фида.
10. Избавляемся от RSS … совсем 😉
Сперва вам необходимо будет ответить на вопрос, а для чего вы используете CMS WordPress? Для своего портфолио или это сайт вашей фирмы? Тогда может быть вам и не нужна RSS-лента на сайте и надо ее удалить?
Решаем проблему: На эту тему есть много советов, например, некоторые советуют просто удалить include в файле wp-settings.php. Но я бы не стал так поступать и редактировать этот файл. Все можно сделать проще. Следующий код поможет вам решить проблему раз и навсегда. Вставляем его в functions.php:
function fb_disable_feed() { wp_die( __('Фид недоступен, пожалуйста, перейдите на нашу главную страницу!') ); } add_action('do_feed', 'fb_disable_feed', 1); add_action('do_feed_rdf', 'fb_disable_feed', 1); add_action('do_feed_rss', 'fb_disable_feed', 1); add_action('do_feed_rss2', 'fb_disable_feed', 1); add_action('do_feed_atom', 'fb_disable_feed', 1);
Источник: alaev.info/blog/post/865