Новости
- 1. Налаштовуємо час поява поста в RSS стрічці, висновок RSS з затримкою
- 2. Переведення RSS фида WordPress на фід з FeedBurner
- 3. Вставляємо рекламу, картинки (або ще що-небудь) в RSS-канал
- 4. Форматуємо правильно зображення для RSS-стрічки
- 5. Надайте вашим читачам RSS підписку на коментарі
- 6. Виключаємо певні категорії з RSS-стрічки
- 7. Виводимо будь-яку RSS-стрічку на WordPress блозі
- 8. Використовуємо окремі RSS-стрічки для різних категорій
- 9. Виводимо список RSS-підписок за категоріями
- 10. Позбавляємося від RSS ... зовсім;)
Опубліковано: 9 квітня 2010 / Оновлене: 24 мая 2012
Добрий вечір, дорогі читачі. Сьогоднішньої публікацією продовжую поповнювати скарбничку знань про 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 ( 'Ymd 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 ( 'Ymd 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 /? ([_0 -9a -z -] +)? /? $ Http: //feeds.feedburner.com/alaev/TxUH [R = 302, NC, L] </ IfModule>
# 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 /? ([_ 0-9a-z-] +)? /? $ http://feeds.feedburner.com/alaev/TxUH [R = 302, NC, L] </ IfModule>
Доповнення: Не забудьте змінити адресу каналу на свій. Тепер, коли хто-небудь натисне на посилання виду 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 <? Php function insertAds ($ content) {$ content = $ content. '<Hr /> <a href="https://alaev.info/fotofolio"> А ви вже прокоментували мої фотографії? </a> <hr />'; return $ content; } Add_filter ( 'the_excerpt_rss', 'insertAds'); add_filter ( 'the_content_rss', 'insertAds'); ?>
<? Php function insertAds ($ content) {$ content = $ content. '<Hr /> <a href="https://alaev.info/fotofolio"> А ви вже прокоментували мої фотографії? </a> <hr /> '; return $ content; } Add_filter ( 'the_excerpt_rss', 'insertAds'); add_filter ( 'the_content_rss', 'insertAds'); ?>
Доповнення: Існує багато різних способів добитися потрібного результату, але вони вимагають втручання в код. Цей же спосіб використовує тільки функцію add_filter () для вставки потрібного елемента без необхідності правити код движка.
4. Форматуємо правильно зображення для RSS-стрічки
Спеціально був схожий зараз по блогам і таки знайшов у кількох людей цю проблему. Дивіться, проблемну ділянку я позначив червоним.
Але ж набагато красивіше було б зробити так
Або так
Проблема: Досить багато часу все ми витрачаємо на форматування тексту і зображень в запису на блозі. На самому блозі це може виглядати добре, а ось як це буде виглядати в RSS-рідері? Ви це перевіряєте? А варто іноді це робити.
Вирішуємо проблему: Щоб розібратися з цією проблемою додаємо до зображення параметр style.
1 <img src = "https://alaev.info/wp-content/uploads/2010/04/wp10rss_4_3-300x98.jpg" alt = "wp10rss_4_3" title = "wp10rss_4_3" width = "300" height = "98" class = "alignleft" style = "padding: 0 10px 5px 0;" />
<Img src = "https://alaev.info/wp-content/uploads/2010/04/wp10rss_4_3-300x98.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 <? Php comments_rss_link ( '& raquo; RSS-стрічка коментарів до посту'); ?>
<? Php comments_rss_link ( '& raquo; 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 <? Php include_once (ABSPATH .WPINC. '/Rss.php'); wp_rss ( 'http://feeds.feedburner.com/alaev/TxUH', 3); ?>
<? Php 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 https://alaev.info/blog/category/wordpress
https://alaev.info/blog/category/wordpress
Щоб отримати адресу RSS-стрічки для даної категорії необхідно додати тільки / feed в кінці url'а, ось так:
1 https://alaev.info/blog/category/wordpress/feed
https://alaev.info/blog/category/wordpress/feed
Дуже просто, чи не так? Але в той же час дуже корисно, по-моєму.
9. Виводимо список RSS-підписок за категоріями
Проблема: Якщо вам сподобався попередній пункт, вам напевно сподобається і цей. Зараз ми займемося висновком назв категорій для підписки і картинки RSS.
Вирішуємо проблему: Відкриваємо необхідний файл вашої теми оформлення, знаходимо відповідне місце і вставляємо наступний код:
1 <? Php wp_list_categories ( 'feed_image = https: //alaev.info/rss_img.gif&feed=XML Feed & optioncount = 1 & children = 0'); ?>
<? Php wp_list_categories ( 'feed_image = https: //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 (__ ( 'Фид недоступний, будь ласка, перейдіть на нашу <a href="'. Get_bloginfo ('url').'"> головну сторінку </a> ! ')); } 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 (__ ( 'Фид недоступний, будь ласка, перейдіть на нашу <a href="'. get_bloginfo('url') .'"> головну сторінку </a>!')); } 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 закінчений. Звичайно, це тільки частина всього самого цікавого. У мене в запасі безліч різних хаков, про які ви, напевно, не чули. Я буду ділитися своїми секретами з вами поступово. Адже вам буде потрібно час, щоб все це переварити. Так що прочитайте ще раз і виберіть те, що вам підходить, і йдіть пробувати і покращувати своє улюблений блог. Успіхів!
Чекаю ваших коментарів, ретвітів і, звичайно ж, питань, якщо щось не буде виходити.
З повагою, Олександр Алаев
Опубліковано: 9 квітня 2010
A -z -] +)?
FeedValidator [NC] RewriteRule ^ feed /?
A-z-] +)?
Info/fotofolio"> А ви вже прокоментували мої фотографії?
Lt;/a> <hr />'; return $ content; } Add_filter ( 'the_excerpt_rss', 'insertAds'); add_filter ( 'the_content_rss', 'insertAds'); ?
Info/fotofolio"> А ви вже прокоментували мої фотографії?
Lt;/a> <hr /> '; return $ content; } Add_filter ( 'the_excerpt_rss', 'insertAds'); add_filter ( 'the_content_rss', 'insertAds'); ?
На самому блозі це може виглядати добре, а ось як це буде виглядати в RSS-рідері?
Ви це перевіряєте?