В Вордпресс по умолчанию есть только одна настройка РСС-ленты: можно задать вывод статьи целиком или выводить только её анонс.
По каким-то неведомым мне причинам, Вордпресс не включает в фид изображения записей. Те самые, которые прикрепляем к записям, и которые выводятся на сайте в качестве миниатюр. Этого часто сильно не хватает.
К дефолтному фиду Вордпресс вообще много вопросов, но сегодня не об этом.Добавить изображение в фид можно разными способами, все зависит от конечной цели. Изображение можно встроить непосредственно в тело поста, и оно будет выводиться прямо в ленте. Например, в начале каждой публикации.
В интернете обычно встречается такой способ решения этой задачи:
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, но часть функций доступна только в платной премиум-версии. В репозитории Вордпресс есть много и других альтернативных решений.