Добавляем изображение записи в РСС-ленту Вордпресс

Добавляем изображение записи в РСС-ленту Вордпресс

1 октября 2018

Разбираемся, как добавить в РСС-ленту Вордпресс изображение записи, и как это сделать, чтобы поняли другие.

20 новейших лендингов для Вордпресс 2018 года

В Вордпресс по-умолчанию есть только одна настройка РСС-ленты: можно задать вывод статьи целиком или выводить только её анонс.

По каким-то неведомым мне причинам, Вордпресс не включает в фид изображения записей. Те самые, которые прикрепляем к записям, и которые выводятся на сайте в качестве миниатюр. Этого часто сильно не хватает.

К дефолтному фиду Вордпресс вообще много вопросов, но сегодня не об этом.

Добавить изображение в фид можно разными способами, все зависит от конечной цели. Изображение можно встроить непосредственно в тело поста, и оно будет выводиться прямо в ленте. Например, в начале каждой публикации.

В интернете обычно встречается такой способ решения этой задачи:

function featuredtoRSS($content) {
	global $post;
	if ( has_post_thumbnail( $post->ID ) ){
		$content = '<div>' . get_the_post_thumbnail( $post->ID, 'medium', array( 'style' => 'margin-bottom: 15px;' ) ) . '</div>' . $content;
	}
	return $content;
}
add_filter('the_excerpt_rss', 'featuredtoRSS');
add_filter('the_content_feed', 'featuredtoRSS');

Код, как обычно, вставляем в файл functions.php активной темы или в функциональный плагин.

Функции get_the_post_thumbnail() можно передать размер и стиль изображения. В примере выше используется изображение формата medium и нижний отступ (margin-bottom) размером 15 пикселей.

А теперь про то, как правильно.

Очень часто РСС-фиды сайтов используются различными агрегаторами, веб-сервисами, которые требуют весь прикрепленный к записи медиаконтент включать в элемент <enclosure>, как того требует спецификация RSS 2.0.

Напомню, <enclosure> является вложенным элементом <item> и имеет три атрибута: url, lenght и type.

Код выглядит так:

function add_featured_image_in_rss() {
    if ( function_exists( 'get_the_image' ) && ( $featured_image = get_the_image('format=array&echo=0') ) ) {
        $featured_image[0] = $featured_image['url'];
    } elseif ( function_exists( 'has_post_thumbnail' ) and has_post_thumbnail() ) {
        $featured_image = wp_get_attachment_image_src( get_post_thumbnail_id(), 'post-thumbnail' );
    } elseif ( function_exists( 'get_post_thumbnail_src' ) ) {
        $featured_image = get_post_thumbnail_src();
        if ( preg_match( '|^<img src="([^"]+)"|', $featured_image[0], $m ) )
            $featured_image[0] = $m[1];
    } else {
        $featured_image = false;
    }
    if ( ! empty( $featured_image ) ) {
        echo "\t" . '<enclosure url="' . $featured_image[0] . '" type="image/jpeg" />' . "\n";
    }   
}
add_action( 'rss2_item', 'add_featured_image_in_rss' );

Задачи решаются и с помощью плагинов.

Например, старенький и давно необновляемый WP RSS Images вполне справляется с поставленной задачей. Справляется и более современный Featured Images in RSS & Mailchimp Email, но часть функций доступна только в платной премиум-версии. В репозитории Вордпресс есть много и других альтернативных решений.

Всё самое новое и интересное из мира Вордпресс в моём Телеграм-канале. Подписываемся!

Популярное в этом месяце

Подпишитесь на рассылку и получайте новые материалы на электронную почту

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

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

Добавить комментарий
RSS

Услуги фрилансеров по фиксированной цене — 500 р.
Подробнее