=== RSS for Yandex Zen === Contributors: Flector Donate link: https://money.yandex.ru/to/41001443750704/200 Tags: yandex, zen, yandex zen, rss, feed Requires at least: 4.4 Tested up to: 6.8 Requires PHP: 5.3 Stable tag: trunk Создание RSS-ленты для сервиса Яндекс.Дзен. == Description == Данный плагин автоматически создаст на вашем сайте новую RSS-ленту для сервиса "Яндекс.Дзен" в полном соответствии с [техническими требованиями](https://yandex.ru/support/zen/publishers/rss.html) Яндекса. После установки плагина не забудьте проверить его настройки в "Настройках\Яндекс.Дзен". Новые правила добавления канала в сервис Яндекс.Дзен читайте на [этой](https://yandex.ru/support/zen/publishers/site-to-channel.html) странице. Цитата: `Для сайта site.ru проверка и привязка возможна при наборе каналом 7000 дочитываний за последние семь дней. Учитываются только публикации со средним временем дочитывания не менее 40 секунд`. Т.е. предлагается сначала создать и заполнить канал материалами, получить 7000 дочитываний, а уже после этого можно будет добавить ленту. Если вам понравился этот плагин, то, пожалуйста, поставьте ему 5 звезд. == Frequently Asked Questions == = Инструкция по установке = 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 = 'Сообщение "'.$post->post_title.'" появилось сначала на "'.get_bloginfo_rss('title').'".'; $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"). Описание всех аргументов цикла вы можете найти в [кодексе](https://codex.wordpress.org/Class_Reference/WP_Query). = Генерация ленты останавливается после первого тега 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 рубрик. == Screenshots == 1. Метабокс плагина. 2. Основные настройки плагина. 3. Продвинутые настройки плагина. == 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 = * первая версия.