Добрий вечір, дорогі читачі. Сьогоднішньою публікацією продовжую поповнювати скарбничку знань про 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’);

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 в кореневій директорії і зберігаємо

1
2
3
4
5
6
7
# temp redirect wordpress content feeds to feedburner
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_09az]+)?/?$ http://feeds.feedburner.com/alaev/TxUH [R=302,NC,L]
</IfModule>

# temp redirect wordpress content feeds to feedburner
RewriteEngine 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

1
2
3
4
5
6
7
8

function insertAds($content) {
$content = $content.‘А ви вже прокоментували мої фотографії?’;
return $content;
}
add_filter(‘the_excerpt_rss’, ‘insertAds’);
add_filter(‘the_content_rss’, ‘insertAds’);
?>

Додаток: Існує багато різних способів домогтися потрібного результату, але вони вимагають втручання у код. Цей спосіб використовують тільки функцію add_filter () для вставки елемента без необхідності редагувати код движка.

4. Форматуємо правильно зображення для RSS-стрічки

Спеціально скидався зараз по блогах і таки знайшов у декількох осіб цю проблему. Дивіться, проблемну ділянку я позначив червоним.

А адже набагато гарніше було б зробити так

Або так

Проблема: Досить багато часу ми витрачаємо на форматування тексту і зображень у запису на блозі. На самому блозі це може виглядати добре, а ось як це буде виглядати в RSS-рідері? Ви це перевіряєте? А іноді варто це робити.

Вирішуємо проблему: Щоб розібратися з цією проблемою додаємо до зображення параметр style.

1 <img src=“content-1/images/wp10rss_4_3-300×98.jpg” alt=“wp10rss_4_3” title=“wp10rss_4_3” width=“300” height=“98” class=“alignleft” style=“padding:0 10px 5px 0;” />

Додатково: padding:0 10px 5px 0; кожен з чотирьох параметрів означає відступ починаючи з верхнього закінчуючи лівим краєм, за годинниковою стрілкою. Отже на прикладі відступ картинки 10px праворуч і 5px знизу.

5. Надайте вашим читачам RSS підписку на коментарі

Проблема: Коли до якогось із постів залишено і досі пишеться дуже багато коментарів, читачам буде дуже складно стежити за розвитком подій. У більшості тем оформлення дана фішка не передбачена, але сам WordPress має востренную функцію, яка дозволить організувати RSS-стрічку коментарів до кожного посту.

Вирішуємо проблему: Рішення тут зовсім просте, ніяких хаків не потрібно. Досить додати функцію comment_rss_link () в вашу тему. Дивимося наступний код:

1 comments_rss_link(‘» RSS-стрічка коментарів до посту’); ?>

6. Виключаємо певні категорії з RSS-стрічки

Проблема: чи Є у вас на блозі категорія або навіть кілька категорій, які ви б не хотіли включати в RSS? Може бути, ця категорія з рекламними оглядами або вашими особистими новинами, яка не цікава шанувальникам основного контенту? Так що ідея НЕ включати її в загальну стрічку виглядає чудовою!

Вирішуємо проблему: Нижче описаний алгоритм дій, який допоможе виключити довільну категорію з стрічки:

  • Обчислюємо ID непотрібній категорії. Його ви можете дізнатися в налаштуваннях самої категорії
  • Тепер йде редагування файлу вашої теми functions.php
  • Вставляємо наступний код у файлі і зберігаємо
  • 1
    2
    3
    4
    5
    6
    7
    8
    function myFilter($query) {
    if ($query->is_feed) {
    $query->set(‘cat’,‘-5’); //Не забудьте вставити свій ID ^_^
    }
    return $query;
    }
    add_filter(‘pre_get_posts’,‘myFilter’);

    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-рідер який можна використовувати для виведення новин.
    Йдемо редагування шаблону і в потрібному місці (наприклад, в сайдбарі або в футері) вставляємо наступний код:

    1
    2
    include_once(ABSPATH.WPINC.‘/rss.php’);
    wp_rss(‘http://feeds.feedburner.com/alaev/TxUH’, 3); ?>

    Додатково: Перше, що ми робимо, це подгружаем стандартний rss.php. Цей файл нам дозволяє використовувати функцію wp_rss (), яка має два параметри: адреса rss-потоку і кількість виведених елементів.

    8. Використовуємо окремі RSS-стрічки для різних категорій

    Проблема: Деякі блоги ведуться авторами, які цікавляться різними темами, іноді не пов’язаними один з одним. Наприклад, програмування, веб-дизайн, блоггінг, seo і т. д. А якщо читачеві цікава тільки одна з цих тем? У цьому випадку варто задуматися над тим, щоб виводити новини для кожної категорії окремо.

    Вирішуємо проблему: Уявіть, що ви хочете підписатися тільки на категорію WordPress, яка має наступну адресу:

    1 http://alaev.info/blog/category/wordpress

    http://alaev.info/blog/category/wordpress

    Щоб отримати адресу RSS-стрічки для даної категорії необхідно додати /feed в кінці до а, ось так:

    1 http://alaev.info/blog/category/wordpress/feed

    http://alaev.info/blog/category/wordpress/feed

    Дуже просто, чи не так? Але в той же час дуже корисно, по-моєму.

    9. Виводимо список RSS-підписок за категоріями

    Проблема: Якщо вам сподобався попередній пункт, вам напевно сподобається і цей. Зараз ми займемося висновком назв категорій для підписки і картинки RSS.

    Вирішуємо проблему: Відкриваємо потрібний файл вашої теми оформлення, знаходимо відповідне місце і вставляємо наступний код:

    1 wp_list_categories(‘feed_image=http://alaev.info/rss_img.gif&feed=XML Feed&optioncount=1&children=0’); ?>

    Додатково: Цей метод використовує стару добру функцію wp_list_categories (). Вона містить два параметри: feed_image – шлях до зображення відображення каналу і, власне, параметр визначає формат самого каналу.

    10. Позбавляємося від RSS …;)

    Спершу вам необхідно буде відповісти на питання, а для чого ви використовуєте CMS WordPress? Для свого портфоліо або це сайт вашої фірми? Тоді можливо вам і не потрібна RSS-стрічка на сайті і треба її видалити?

    Вирішуємо проблему: На цю тему є багато порад, наприклад, деякі радять просто видалити include у файлі wp-settings.php. Але я б не став так робити і редагувати цей файл. Все можна зробити простіше. Наступний код допоможе вам вирішити проблему раз і назавжди. Вставляємо його в functions.php:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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);

    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);

    Переклад, адаптований і підготовлений для найкращого розуміння матеріалу.
    Джерело: Smashingmagazine.com — 10 Useful RSS-Tricks and Hacks For WordPress

    Ну ось і все, дорогі читачі. Сьогоднішній екскурс в покращення нашого сайту на WordPress закінчений. Звичайно, це тільки частина всього самого цікавого. У мене в запасі безліч різних хаків, про яких ви, напевно, не чули. Я буду ділитися своїми секретами з вами поступово. Адже потрібен час, щоб все це переварити. Так що прочитайте ще раз і виберіть те, що вам підходить, і йдіть пробувати і покращувати свій улюблений блог. Удачі!

    Чекаю ваших коментарів, ретвітів і, звичайно ж, питань, якщо щось не буде виходити.

    З повагою, Олександр Алаєв