RSS for Yandex Zen

Description

Данный плагин автоматически создаст на вашем сайте новую RSS-ленту для сервиса “Яндекс.Дзен” в полном соответствии с техническими требованиями Яндекса.

После установки плагина не забудьте проверить его настройки в “Настройках\Яндекс.Дзен”.

Новые правила добавления канала в сервис Яндекс.Дзен читайте на этой странице.

Цитата: Для сайта site.ru проверка и привязка возможна при наборе каналом 7000 дочитываний за последние семь дней. Учитываются только публикации со средним временем дочитывания не менее 40 секунд.

Т.е. предлагается сначала создать и заполнить канал материалами, получить 7000 дочитываний, а уже после этого можно будет добавить ленту.

Если вам понравился этот плагин, то, пожалуйста, поставьте ему 5 звезд.

Screenshots

  • Метабокс плагина.
  • Основные настройки плагина.
  • Продвинутые настройки плагина.

FAQ

Инструкция по установке

  1. Установите плагин из админки движка “Плагины\Добавить новый“.
  2. Активируйте плагин в меню “Плагины“.
  3. Зайдите в настройки плагина “Настройки\Яндекс.Дзен” и сохраните их.
  4. Это все.

Лента не проходит валидацию, что делать?

Лента для Яндекс.Дзена никогда не сможет пройти валидацию, так как технические требования Яндекс.Дзена несовместимы со стандартами обычного RSS.

Если техническая поддержка Яндекс.Дзена не принимает вашу ленту и указывает на валидатор, то значит, что их не устраивает какой-либо контент ваших записей. Например, им абсолютно точно не нравятся ссылки на Youtube-ролики, скрипты рекламы, посторонние теги и прочее. Вам следуют уточнить у них, что именно их не устраивает (может, у вас банально нет изображений или не хватает текста в записях).

И еще замечание: техническая поддержка Яндекс.Дзена после вашей заявки спросит вас о том, соответствует ли лента их рекомендациям, а также попросит вас проверить ленту в валидаторе. Это не отказ! Это просто их страховка от лишних телодвижений, смело отвечайте, что лента соответствует всем их техническим требованиям.

Лента отдается с неправильным content type, что делать?

Плагин создает ленту с правильным контент типом “application/rss+xml”. Если у вас лента отдается с другим контент типом, то весьма вероятно, что в этом виноват ваш плагин кэширования. Добавьте урл ленты в исключения плагина (все плагины кэширования имеют опцию исключения определенных страниц).

URL источника запрещен в robots.txt, что делать?

Добавьте в robots.txt директиву:

Allow: /feed/zen/

Где “zen” это имя вашей RSS-ленты.

Как добавить “подпись” к записям ленты?

В плагине есть два фильтра обработки контента записей. Для контента записи используется “yzen_the_content”, а для описания записи “yzen_the_excerpt”.

Например, добавьте в файл functions.php вашей темы код:

function yzen_sign($content) {
    global $post;

    $sign = 'Сообщение "<a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a>" появилось сначала на "<a href="'.get_bloginfo_rss('url').'">'.get_bloginfo_rss('title').'</a>".';

    $content .= $sign;
    return $content;
}    
add_filter('yzen_the_content', 'yzen_sign');

И вы получите подпись, аналогичную подписи от плагина Yoast SEO.

Как изменить аргументы цикла для собственной выборки записей?

Фильтр на аргументы цикла называется “yzen_query_args”, использовать его просто:

function my_yzen_query_args($args) {
    $args['tag'] = 'bread+baking+recipe';
    return $args;
}    
add_filter('yzen_query_args', 'my_yzen_query_args');

В результате в ленту плагина попадут только записи, имеющие все 3 указанные метки (“bread”, “baking” и “recipe”).
Описание всех аргументов цикла вы можете найти в кодексе.

Генерация ленты останавливается после первого тега enclosure, что делать?

Вам необходимо включить расширение php-xml для php, которое почти у всех хостеров и так включено по умолчанию.

Как автоматически указывать актуальность статьи в зависимости от рубрики?

Нужный фильтр называется “yzen_type_article”, использовать его просто:

function my_type_article($yztypearticle) {
    if ( in_category( array( 'news', 'other-news' ), get_the_ID() ) ) {
        // 'true' для новостных рубрик
        $yztypearticle = 'true';
    } else {
        // 'false' для остальных рубрик
        $yztypearticle = 'false';
    }
    return $yztypearticle;
}
add_filter('yzen_type_article', 'my_type_article');

В результате в ленте все записи из рубрик с ярлыками “news” и “other-news” будут отмечены как новостные, а записи всех остальных рубрик будут считаться актуальными всегда. Вместо ярлыков можно указывать ID рубрик.

Как автоматически указывать тип публикации статьи в зависимости от рубрики?

Нужный фильтр называется “yzen_type_platform”, использовать его просто:

function my_type_platform($yztypeplatform) {
    if ( in_category( array( 'news', 'other-news' ), get_the_ID() ) ) {
        // 'native-yes' - материал будет опубликован на платформе и попадет в ленту рекомендаций.
        // 'native-draft' - материал сохранится на платформе в качестве черновика. Вы можете отредактировать черновик по своему усмотрению и опубликовать.
        // 'native-no' - материал попадет в ленту RSS как публикация с сайта.
        $yztypeplatform = 'native-yes';
    }
    return $yztypeplatform;
}
add_filter('yzen_type_platform', 'my_type_platform');

В результате в ленте все записи из рубрик с ярлыками “news” и “other-news” будут целиком опубликованы на платформе Дзен. Вместо ярлыков можно указывать ID рубрик.

Как автоматически указывать настройку индексирования статьи в зависимости от рубрики?

Нужный фильтр называется “yzen_index”, использовать его просто:

function my_type_index($yzindex) {
    if ( in_category( array( 'news', 'other-news' ), get_the_ID() ) ) {
        // 'index' - материал индексируется в Дзене.
        // 'noindex' - материал не индексируется в Дзене.
        $yzindex = 'noindex';
    }
    return $yzindex;
}
add_filter('yzen_index', 'my_type_index');

В результате в ленте все записи из рубрик с ярлыками “news” и “other-news” будут отмечены как неиндексируемые на платформе Дзен. Вместо ярлыков можно указывать ID рубрик.

Reviews

مارچ 12, 2023
Плагин перестал работать, стал косячить – отдаёт заголовок статей правильный, а содержание меняет у предыдущей статьи на последнюю. Автор шифруется, на сообщения не отвечает. Очень плохо.
جنوری 20, 2023 4 replies
По началу плагин работал, но потом перестал. Тех.поддержка дзена сказала что в ленте много лишнего и много не поддерживаемых аргументов. Поэтому плагин не работает.
پروری 15, 2020
Это отлично! Даже не надеялся что уже есть такой плагин ..)
Read all 29 reviews

Contributors & Developers

“RSS for Yandex Zen” is open source software. The following people have contributed to this plugin.

Contributors

“RSS for Yandex Zen” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “RSS for Yandex Zen” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.28 (28.01.2021)

  • добавлены настройки публикации (“Опубликовать в Дзене”, “Сохранить как черновик в Дзене”, “Публикация с сайта”).
  • добавлены настройки индексации статей, созданных на платформе.
  • добавлены фильтры “yzen_type_platform” и “yzen_index” для автоматической простановки новых настроек в зависимости от рубрики (читайте FAQ).

1.27 (06.07.2021)

  • добавлено указание актуальности статей (новая функция Яндекс.Дзена).
  • добавлен фильтр “yzen_type_article” для автоматической простановки указания актуальности статей в зависимости от рубрики (читайте FAQ).
  • исправлено формирование описаний изображений.
  • исправлены js-уязвимости на странице настроек плагина.
  • добавлен вывод подписи для главного изображения записи.
  • добавлены фильтры “yzen_thumb_imgurl” и “yzen_thumb_caption” для вывода изображения записи в случае, если используется собственное поле для хранения изображения записи, а не “родной” функционал WordPress.

1.26

  • это мини-апдейт с исправлениями ошибок.
  • исправлено формирование guid (теперь там не ссылки).
  • исправлено формирование даты (указывается часовой пояс).

1.25

  • удалены все функции сервиса Яндекс.Турбо (используйте отдельный плагин RSS for Yandex Turbo).
  • добавлена возможность включения в начало записей их “отрывков”.
  • добавлена возможность исключения записей из ленты по умолчанию.
  • добавлен фильтр на аргументы цикла (для разработчиков для более гибкой выборки записей ленты).
  • исправлено дублирование контента при использовании шорткодов некоторых плагинов (вукомерс и другие).
  • удалены все лишние фильтры в фиде (исправление невалидности ленты, когда некоторые плагины изменяли ленту под себя).

1.24

  • переписана функция удаления тегов с контентом (теперь она справляется со вложенностью).

1.23

  • функция iconv_strlen была заменена на функцию mb_strlen (первая выдавала ошибку при плохой разметке записи – в результате отсутствовала реклама в середине записи).

1.22

  • добавлена возможность включения в rss-ленту записей только указанных таксономий.

1.21

  • добавлена возможность установить все поддерживаемые Яндексом счетчики на turbo-страницах.

1.20

  • добавлена возможность выводить блок “похожих” записей при включенных turbo-страницах (тег <yandex:related>).
  • добавлена возможность отключения рекламы для конкретной записи на turbo-странице (в метабоксе плагина).
  • из контента записей теперь удаляются все спец. символы юникода (как невалидные в rss).
  • полностью переписаны регулярки плагина – из тегов img теперь вырезаются все лишние атрибуты.

1.19

  • я дико извиняюсь за столь частые обновления плагина!
  • были оптимизированы регулярки плагина, так как в некоторых случаях мог удаляться контент записи в RSS-ленте.

1.18

  • к контенту и описанию записей больше не применяется фильтр “the_content_feed” (во избежание конфликтов с другими плагинами, работающими с RSS).
  • добавлены фильтры обработки контента “yzen_the_content” и описания “yzen_the_excerpt” записи.
  • удален action “rss2_item” (во избежание добавления в ленту левых тегов от плагинов вроде Jetpack).
  • при удалении плагина настройки плагина теперь будут полностью удалены из базы данных.
  • при деактивации плагина RSS-лента плагина теперь будет выдавать обычную 404-ошибку.

1.17

  • добавлен третий рекламный блок и возможность выводить рекламу в середине записи (на turbo-страницах).
  • добавлена возможность отключения turbo-страниц (путем добавления turbo="false" к тегу <item>).
  • минимальное количество записей уменьшено до 20 (изменились требования Яндекса).
  • включение рекламных блоков больше не работает, если не указаны идентификаторы рекламных сетей.
  • исправлено сохранение пустого значения счетчика метрики (чтобы удалить номер установленного счетчика).
  • скрипты из кода плагина были перенесены во внешний файл (внутреннее изменение).

1.16

  • добавлена возможность изменения имени ленты в урле.
  • добавлена отдельная опция включения миниатюр на turbo-страницах.
  • функция wpautop теперь обрабатывает контент после удаления тегов, а не до.
  • переписана функция удаления тегов без контента (теперь она справляется с большой вложенностью).
  • из разметки изображений убраны атрибуты srcset и sizes.
  • исправлена ошибка парсинга изображений (когда в rss пропадал весь текст записи).

1.15

  • добавлена возможность отключить разметку “автора” для изображений.
  • добавлена возможность отключить разметку “описания” для изображений.
  • добавлена ссылка на плагин RSS for Yandex Turbo.

1.14

  • исправлено двойное отображение миниатюры записи (при включенной опции добавления в RSS миниатюры записи) на turbo-страницах.
  • убран двойной заголовок в записях на turbo-страницах (оставлен тег h1, убран тег h2).

1.13

  • исправлена ошибка с кодом счетчика метрики (в инструкциях яндекса была ошибка по его разметке).

1.12

  • добавлена поддержка Яндекс.Турбо (в тестовом режиме).

1.11

  • из заголовков убран тег “X-Robots-Tag: noindex, follow”, добавляемый SEO-плагинами (изменен на “X-Robots-Tag: index, follow”).

1.10

  • исправлена ошибка с удалением тегов из контента записей.

1.09

  • исправлен досадный баг с определением дублей в теге enclosure.

1.08

  • добавлена возможность задавать описание записей в rss-ленте из SEO-плагинов.
  • добавлена возможность удалять указанные html-теги в записях (с удалением и без удаления контента этих тегов).
  • добавлена возможность удалять указанный контент из записей (по умолчанию удаляются пустые теги параграфа и тег more).
  • удалены дубли картинок в теге enclosure (если изображения в записях повторяются).
  • поправлена разметка миниатюр, которая при определенных условиях могла неправильно выводиться.
  • теги параграфа удаляются вокруг тегов figure, если кроме figure в параграфе нет другого содержимого.
  • часть настроек плагина перенесена в раздел “Продвинутые настройки”.
  • контент записей в rss теперь обрабатывается фильтром “the_content_feed”.
  • из контента теперь удаляются ссылки на youtube-ролики (тех. поддержка яндекс.дзена заворачивает ленты с youtube-ссылками).
  • исправлена разметка изображений, для которых в редакторе прописана “подпись” (в html5-коде).

1.07

  • “прикрепленные” записи теперь игнорируются при выводе в rss-ленте (они выводятся на общем основании – по дате публикации).
  • изменение интерфейса метабокса при редактировании записей (чекбоксы вместо селектов).
  • исправлен баг формирования rss-ленты при неправильной разметке записей.

1.06

  • исправлена ошибка с русскими именами изображений.
  • rss-лента теперь отдается с content-type “application/rss+xml” (как стандартные rss-ленты движка).

1.05

  • добавлена возможность исключать из ленты все записи указанных таксономий (рубрик, меток и т.д.).
  • исправлена разметка изображений, для которых в редакторе прописана “подпись”.

1.04

  • исправлен баг с количеством записей в ленте (когда исключенные вручную записи все равно учитывались в общем количестве записей в ленте).

1.03

  • тег iframe теперь вырезается в RSS-ленте.

1.02

  • добавлена возможность включения в RSS миниатюр записей.
  • убран пробел в конце тега enclosure.

1.01

  • параметры из ссылок на картинки теперь вырезаются.

1.00

  • первая версия.