Как подключить Вордпресс к Яндекс.Дзен
Рассказываю, как в Вордпресс создать новый РСС-фид для подключения к Яндекс.Дзен.
На этой неделе на меня обрушился шквал заявок на подключение сайтов к новому сервису Яндекс.Дзен.
Яндекс.Дзен — это сервис персональных рекомендаций Яндекса. Он составляет подборку новостей, постов из блогов и иных публикаций, которые могут быть вам интересны.
К сожалению, дефолтный РСС-фид Вордпресс не соответствует требованиям Яндекса. И для успешного прохождения технической модерации необходимо создать дополнительный.
Делается это очень просто. Особенно если взять за основу инструкцию по созданию кастомных фидов на WPbeginner, ссылка в конце.
1. В файле functions.php активной темы создаем новый фид и называем его zen, например.
add_action('init', 'customRSS'); function customRSS(){ add_feed('zen', 'customRSSFunc'); }
В этом случае фид будет иметь адрес /feed/zen
2. В директории темы создаем новый файл, называем его rss-zen.php — это будет шаблон нового фида.
3. Вставляем в шаблон следующий код.
<?php $posts = query_posts('showposts=50'); header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true); echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" <?php do_action('rss2_ns'); ?>> <channel> <title><?php bloginfo('name'); ?></title> <link><?php bloginfo('url') ?></link> <description><?php bloginfo('description') ?></description> <language>ru</language> <?php do_action('rss2_head'); ?> <?php while(have_posts()) : the_post(); ?> <item> <title><?php the_title_rss(); ?></title> <link><?php the_permalink_rss(); ?></link> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate> <media:rating scheme="urn:simple">nonadult</media:rating> <author><?php the_author(); ?></author> <category>Технологии</category> <?php $gallery = get_attached_media( 'image',$post ); foreach( $gallery as $image_url ) { echo '<enclosure url="' . $image_url->guid . '" type="image/jpeg"/> '; } ?> <description><![CDATA[<?php echo get_the_excerpt(); ?>]]></description> <content:encoded><![CDATA[ <?php $content=get_post_field('post_content', $post->ID); $pattern = '/(<img([^>]*)>)/i'; $replacement = ' <figure>$1 <figcaption>'.get_the_title().'<span class="copyright"><?php the_author(); ?></span></figcaption> </figure> '; $content = preg_replace( $pattern, $replacement, $content ); echo $content; ?>]]></content:encoded> <?php rss_enclosure(); ?> <?php do_action('rss2_item'); ?> </item> <?php endwhile; ?> </channel> </rss>
В коде меняем category на свою из списка категорий Яндекс.Дзен:
Происшествия, Политика, Война, Общество, Экономика, Спорт, Технологии, Наука, Игры, Музыка, Литература, Кино, Культура, Мода, Знаменитости, Психология, Здоровье, Авто, Дом, Хобби, Еда, Дизайн, Фотографии, Юмор, Природа, Путешествия.
Если контент сайта относится к категории для взрослых, обязательно меняем nonadult на adult в этой строке.
<media:rating scheme="urn:simple">nonadult</media:rating>
UTM-метки добавляются следующим образом:
<link><?php the_permalink_rss(); ?>?utm_source=zen</link>
4. Подключаем шаблон к новому фиду в functions.php.
function customRSSFunc(){ get_template_part('rss', 'zen'); }
5. Открываем админку Вордпресс, идем в настройки постоянных ссылок и нажимаем кнопку «Сохранить изменения». Структура обновится и новый фид будет доступен по адресу /feed/zen.
Отправляем фид на модерацию с помощью формы обратной связи Дзена в разделе «Создание и настройка канала».
Через некоторое время придет письмо с подтверждением подключения.
По материалам:
UPD: Исправленный валидный фид здесь
Фулстек веб‑разработчик, специализируюсь на платформе WordPress
Подробнее
Не подскажете в чём может причина, у меня не у всех постов добавляется изображения
https://ru.wordpress.org/plugins/rss-for-yandex-zen/
User-agent: Yandex
Allow: /zen_feed/
Имеется 1 вопрос, что сделать, чтобы реализовать это:
UTM-метки добавляются следующим образом:
1 ?utm_source=zen
line 25, column 0: Non-html tag: figcaption (91 occurrences) [help]
<![CDATA[
https://danilin.biz/wordpress-valid-yandex-zen-feed.htm