Как настроить вывод RSS в WordPress

Опубликовано: 19.10.2017

Стандартный вывод RSS-потока из WordPress удовлетворяет немногих — в нём нет изображения к новости, а сам текст зачатую оказывается обрезан троеточием на конце. Но и из этой ситуации есть выход. Какой? Об этом в данном материале.

Для кросс-постинга в социальные сети я вот уже почти год использую по-своему уникальный сервис NovaPress .

У сервиса отличный интерфейс, удобный и практичный. Он позволяет автоматизировать рутинную работу по связи сайта и социальных сетей.

Для получения информации требуется её источник.

Одним из основных источников является RSS -канал.

Так вот, если указывать стандартный RSS -канал обычного WordPress -блога, то на выходе мы можем получить нечто не совсем притязательное:

Что-то в таком духе(да простят меня коллеги по цеху):

Как исправить ситуацию в пользу вот такого результата?

Банально, текст в RSS – это текст до «ката» + картинка к записи Featured Image.

Здесь нам на помощь прийдёт плагин:

Feed Template Customize

Как видите из описания, его функционал достаточно простой. Он подменяет при помощи хуков стандартные шаблоны вывода.

Готовы исправить ситуацию с неприглядным RSS? Поехали.

Копируем файл /wp-includes/feed-rss2.php в корень текущего шаблона сайта /wp-content/themes/текущий_шаблон/. Заменяем: while( have_posts()) : the_post(); ?> <item> <title><?php the_title_rss() ?></title> <link><?php the_permalink_rss() ?></link> <?php if ( get_comments_number() || comments_open() ) : ?> <comments><?php comments_link_feed(); ?></comments> <?php endif; ?> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate> <dc:creator><![CDATA[<?php the_author() ?>]]></dc:creator> <?php the_category_rss('rss2') ?> <guid isPermaLink="false"><?php the_guid(); ?></guid> <?php if (get_option('rss_use_excerpt')) : ?> <description><![CDATA[<?php the_excerpt_rss(); ?>]]></description> <?php else : ?> <description><![CDATA[<?php the_excerpt_rss(); ?>]]></description> <?php $content = get_the_content_feed('rss2'); ?> <?php if ( strlen( $content ) > 0 ) : ?> <content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded> <?php else : ?> <content:encoded><![CDATA[<?php the_excerpt_rss(); ?>]]></content:encoded> <?php endif; ?> <?php endif; ?> <?php if ( get_comments_number() || comments_open() ) : ?> <wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss> <slash:comments><?php echo get_comments_number(); ?></slash:comments> <?php endif; ?> <?php rss_enclosure(); ?> <?php /** * Fires at the end of each RSS2 feed item. * * @since 2.0.0 */ do_action( 'rss2_item' ); ?> </item> На: while( have_posts()) : the_post(); $data = get_extended( $post->post_content ); $intro = strip_tags(apply_filters('the_content',$data['main']),'<a><p><b><i><u>'); ?> <item> <title><?php the_title_rss() ?></title> <link><?php the_permalink_rss() ?></link> <comments><?php comments_link_feed(); ?></comments> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate> <dc:creator><![CDATA[<?php the_author() ?>]]></dc:creator> <?php the_category_rss('rss2') ?> <guid isPermaLink="false"><?php the_guid(); ?></guid> <?php if (get_option('rss_use_excerpt')) : ?> <description><![CDATA[<?php if(!empty($data['extended'])): echo $intro; else: the_excerpt_rss(); endif;?>]]></description> <?php else : ?> <description><![CDATA[<?php if(!empty($data['extended'])): echo $intro; else: the_excerpt_rss(); endif;?>]]></description> <?php $content = get_the_content_feed('rss2'); ?> <?php if ( strlen( $content ) > 0 ) : ?> <description><![CDATA[<?php if(!empty($data['extended'])): echo $intro; else: $content; endif;?>]]></description> <?php else : ?> <content:encoded><![CDATA[<?php the_excerpt_rss(); ?>]]></content:encoded> <?php endif; ?> <?php endif; ?> <?php if(has_post_thumbnail()):?> <?php $thumb = wp_get_attachment_url( get_post_thumbnail_id($post->ID)); $mime = image_type_to_mime_type(exif_imagetype($thumb)); ?> <enclosure url="<?php echo $thumb?>" type="<?php echo $mime?>" /> <?php endif?> <wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss> <slash:comments><?php echo get_comments_number(); ?></slash:comments> <?php rss_enclosure(); ?> <?php /** * Fires at the end of each RSS2 feed item. * * @since 2.0.0 */ do_action( 'rss2_item' ); ?> </item> Проверяем RSS-поток по адресу http://ваш_сайт.ru/feed:

rss