Добавить WordPress рекомендуемое изображение в RSS-канал

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

function featuredtoRSS($content) {
global $post;
if ( has_post_thumbnail( $post->ID ) ){
$content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'style' => 'float:left; margin:0 15px 15px 0;' ) ) . '' . $content;
}
return $content;
}

add_filter('the_excerpt_rss', 'featuredtoRSS');
add_filter('the_content_feed', 'featuredtoRSS');

по-видимому, MailChimp хочет, чтобы это был" собственный " уникальный элемент изображения. Вот пример того, чего они хотят: http://kb.mailchimp.com/article/how-can-i-format-the-image-content-in-my-rss-to-email-campaigns

но похоже, что он находится в другом формате RSS. Вот что выводит мой RSS: http://pacmissions.org/dev/missions/zimbabwe-2012/feed/

2 ответов


мне часто приходится создавать пользовательские каналы для MailChimp и обнаруживать, что большую часть времени мне приходится вносить несколько "хакерских" изменений, таких как ввод пользовательских значений в ограниченные стандартные поля, которые поддерживает MailChimp.

из-за этого мне нравится использовать метод, описанный в Yoast ( http://yoast.com/custom-rss-feeds-wordpress/ ) чтобы создать страницу, которая выводит пользовательский RSS-канал.

есть несколько настроек, чтобы сделать для того, чтобы получить отличаемое изображение включенное как поле которое MailChimp узнает.

во-первых, вам нужно добавить пространство имен Media RSS, что я обычно делаю, добавляя в открытие <rss> tag:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss">

затем для того, чтобы добавить изображение внутри элемента:

<?php if(get_the_post_thumbnail()): ?>
    <media:content url="<?php echo wp_get_attachment_url(get_post_thumbnail_id($post->ID)); ?>" medium="image" />
<?php endif; ?>

Если вам нужно указать конкретный размер изображения для включения, вам нужно будет использовать этот код внутри элемента вместо:

<?php if(get_the_post_thumbnail()): ?>
    <media:content url="<?php $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'imageSize'); echo $image[0]; ?>" medium="image" />
<?php endif; ?>

затем вы можете захватить это в MailChimp, используя *|RSSITEM:IMAGE|* или *|FEEDITEM:IMAGE|* объединять теги.


есть много примеров того, как добавить изображение в топ-контент в ленте, но не слишком много, когда вы создаете новый тег. Одна из потенциальных проблем заключается в том, что создание пользовательского тега или чего-то подобного не будет допустимым форматом RSS. Если вы создаете XML-документ для собственного использования,не имеет значения, проверяет ли лента. Вот что я сделал, и вы легко сможете немного изменить его для случая использования MailChimp.

на functions.php добавить (внутри папки темы:wp-content/themes/{your-active-theme-folder}):

function insertImageRSS() {
  global $post;
  preg_match("/(http:\/\/.*(jpg|jpeg|png|gif|tif|bmp))\"/i", get_the_post_thumbnail( $post->ID, 'thumbnail' ), $matches);
  return $matches[1];
}

на wp-includes/feed-rss2.php (я использовал тег enclosure, но еще не сделал расчет размера файла, поэтому я использовал заполнитель):

<?php if (get_the_post_thumbnail( $post->ID, 'thumbnail' ) != '') { ?><enclosure <?php echo 'url="' . insertImageRSS() . '"'; ?> length="1000" type="image/jpeg" /><?php } ?>