Как подключить Вордпресс к Яндекс.Дзен

Как подключить Вордпресс к Яндекс.Дзен

16 июня 2017 361 1

Рассказываю, как в Вордпресс создать новый РСС-фид для подключения к Яндекс.Дзен.

На этой неделе на меня обрушился шквал заявок на подключение сайтов к новому сервису Яндекс.Дзен.

Яндекс.Дзен — это сервис персональных рекомендаций Яндекса. Он составляет подборку новостей, постов из блогов и иных публикаций, которые могут быть вам интересны.

К сожалению, дефолтный РСС-фид Вордпресс не соответствует требованиям Яндекса. И для успешного прохождения технической модерации необходимо создать дополнительный.

Делается это очень просто. Особенно если взять за основу инструкцию по созданию кастомных фидов на 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>

4. Подключаем шаблон к новому фиду в functions.php.

function customRSSFunc(){
 get_template_part('rss', 'zen');
}

5. Открываем админку Вордпресс, идем в настройки постоянных ссылок и нажимаем кнопку «Сохранить изменения». Структура обновится и новый фид будет доступен по адресу /feed/zen.

Отправляем фид на модерацию с помощью формы обратной связи Дзена в разделе «Создание и настройка канала».

Через некоторое время придет письмо с подтверждением подключения.

Подтверждение подключения к Яндекс.Дзен

По материалам:

Иван Данилин
Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

  ПОДПИСАТЬСЯ

Комментарии
  • Vadim Elshaidt

    <![CDATA[ выдает ошибки в валидаторе: content:encoded should not contain srcset attribute, content:encoded should not contain sizes attribute. Фид не валиден!

Разгоните свой WordPress

Выбираем быстрый и надежный хостинг для своих сайтов

Подробнее