RSS-стрічка сайту (фид сайту) дає можливість користувачам стежити за появою нових матеріалів на вашому блозі. Для цього користувачі підписуються на ваш блог через будь-якої обробник RSS і отримують нові матеріали з вашого блогу в своїй RSS-стрічці. Іноді для зручності або з інших причин, потрібно змінити висновок постів в ФІДЕ. Наприклад, додати в стрічку записи довільних типів, додати картинки до постів і т.д.
У цій статті я приведу приклади, що демонструють як змінювати висновок фідів в WordPress. Всі наведені нижче хукі слід розміщувати в файл теми functions.php або створювати з них окремий плагін. Код плагіна буде виглядати так:
Включення довільних типів записів в RSS-стрічку
Припустимо, за допомогою register_post_type (). ми створили новий тип запису book і хотіли б, щоб записи цього типу, на рівні з постами (post), потрапляли в RSS-стрічку. Зробити це можна так:
Якщо, потрібно включити ще й постійні сторінки (page), то додайте "page" в масив: array ( 'post', 'book', 'page').
Додавання мініатюри поста в RSS-стрічку
Підключимося до хуку the_excerpt_rss. який спрацьовує для короткого опису посади в ФІДЕ і додамо в нього мініатюру поста:
Для отримання мініатюри використовується функція get_the_post_thumbnail (). у другому аргументі якої зазначений розмір отримуваної картинки (100х80), а в третьому - атрибут тега - align = "left". Деякі обробники RSS-стрічок вирізують вбудовані CSS правила (style = ''), тому краще використовувати align = "left". коли потрібно розташувати картинку ліворуч.
Зазначений розмір (100x80), не справжній, це не копія оригіналу картинки з потрібними нам розмірами: підбирається найбільш підходяща за розміром картинка і візуально зменшується під зазначені розміри. Іноді краще створити спеціальний формат картинок-мініатюр для RSS-стрічок. Для цього вам потрібно буде зареєструвати новий формат мініатюр для вашої теми, так:
В цьому випадку, при первинному завантаженні будь-якого зображення в WordPress, буде створюватися пропорційно-зменшена копія оригіналу картинки. У підсумку, в фідах будуть виводиться картинки з реальними розмірами.
Після добавки такого коду в functions.php або плагін, мініатюру можна отримати із зазначенням розміру feed:
Якщо потрібно змінити виведений контент, а не короткий опис, то використовуйте хук the_content_rss.
Як буде виглядати RSS-стрічка в результаті, залежить від програми, що зчитує фид. Так, в різних браузерах стрічка виглядає по-різному. Тому перевіряйте як виглядає фид в кожному конкретному випадку і не намагайтеся зробити з висновком щось занадто нестандартне.
Виняток з фида постів з міткою
Якщо потрібно, щоб в RSS-стрічку не потрапляли пости мають, припустимо, мітку ID якої дорівнює 451, то використовуйте такий код:
Якщо потрібно виключити пости мають будь-яку із зазначених міток, то вкажіть ID всіх міток в масиві:
Виняток рубрик з RSS-стрічки
Щоб виключити непотрібні рубрики з фида, нехай це будуть рубрики з ID 6 і 4, використовуйте такий код:
Виняток дерева рубрики з RSS-стрічки
Якщо потрібно виключити пости з рубрики і всіх її підрубрик, ми можемо використовувати попередній приклад і вказати ID рубрики і всіх підрубрик вручну. Однак це не зручно адже, якщо ми додамо в цю рубрику нову підрубрику, нам доведеться додавати ID цієї продрубрікі в код, інакше пости з неї потраплять в стрічку, а нам цього не треба.
Щоб виключити пости з рубрики і автоматично з усіх її підрубрик, використовуйте наступний код, де потрібно вказати тільки ID батьківської рубрики, а ID всіх підрубрик будуть отримані автоматично:
Виняток з фида постів мають довільно поле
Припустимо, нам потрібно виключити з RSS-стрічки випадкові пости: не залежать від мітки, рубрики чи інший таксономії. Тоді, ми може додавати до таких постів, довільне поле exclude_from_feed з будь-яким значенням (нехай 1) і використовувати код, який виключить з RSS-стрічки всі пости мають довільне поле exclude_from_feed:
Висновок в стрічці постів тільки із зазначених рубрик
У випадках, коли потрібно вивести в фіде пости тільки з однієї рубрики можна використовувати такий код:
Для виведення постів з декількох рубрик, вкажіть їх назви (складаючи) через кому:
Також можна вказати ID рубрик, через кому:
Додаємо посилання на джерело в кінець кожного поста в RSS-стрічці
У деяких випадках вказувати посилання на сайт краще текстом, тому що HTML теги можна вирізувати обработчиками RSS-стрічок і якщо вказати посилання з анкором, користувач може побачити тільки анкор посилання, без самої посилання.
Пов'язані з матюками записи в кінці кожного поста в RSS-стрічці
Розвиваючи думку додаткового контенту до постів в RSS-стрічці, можна наприклад, в кінець кожного поста додати посилання на записи з однаковими тегами. Тобто, скажімо, біля посту є мітка "життя" в стрічці в кінець цього поста будуть додані інші пости з міткою "життя":
Регулюємо кількість записів виводяться в RSS-стрічці
Зазвичай кількість записів, що відображаються в RSS-стрічці можна встановити в настройках: Параметри> Читання> В RSS-стрічках відображати останні. Однак, якщо вам потрібно змінити кількість записів через плагін або в будь-яких інших випадках, коли не підходить стандартне зміна в настройках, то використовуйте такий код:
Тут, ми використовували фільтр post_limits. який дозволяє потрапити в SQL запит і змінити кількість одержуваних рядків запиту (LIMIT 7), в нашому випадку, кількість записів.
Затримка перед публікацією записи в RSS фід
Хукі, використані в прикладах:
the_excerpt_rss - фільтрує контент короткого опису переданого в фид;
the_content_feed - фільтрує контент поста після того, як він отриманий з бази даних і оброблений фільтром the_content;
Плагін кешування може впливати на перевірку миттєвих змін. Припустимо ви видалив плагін через якого проблеми, перевірили, а проблема залишилася бо кеш. І висновок - цей плагін не винен, хоча він винен. Тільки так може впливати плагін кешування. Крім того, RSS кешируєтся в самому WordPress, поетом після кожної зміни бажано якось переконатися що RSS віддається свіжий.
Вам потрібно знайти проблему. ПО замовчуванням в WordPress все нормально з RSS - це факт! Звідси: спробуйте тимчасово змінити тему, на будь-яку, і перевірте висновок RSS. Якщо знову також, то винен плагін. Вимикайте плагіни по одному. Якщо нічого не допомагає, але загляньте в папку wp-contents / mu-plugins (її може не бути), там теж можуть розташовуватися плагіни.
В останню чергу, зайдіть в phpMyAdmin і зробіть пошук в таблиці wp_options по полю option_name шукайте% rss%:
Можливо у вас RSS лежить в кеші бази даних. Таке буває, в яких випадках точно я не знаю, але пам'ятаю зустрічався з таким.
Загалом, знайдіть проблемне місце, потім пишіть, я допоможу вирішити її, якщо самі не зможете. За вас проблему ніхто шукати не буде, ну або майже ніхто, для цього потрібні доступи і вільний час і бажання помоч, ну або оплата за роботу.
Удачі в пошуках!