Добавить избранное изображение 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/


person Adam    schedule 03.02.2012    source источник
comment
попробовать это может быть? wordpress.org/extend/plugins/wp-rss-images   -  person rob.m    schedule 05.02.2012


Ответы (2)


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

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

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

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

<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|*.

person Ash    schedule 03.02.2012

Кажется, есть много примеров того, как добавить изображение в начало контента в ленте, но не слишком много, когда вы создаете новый тег. Одна потенциальная проблема заключается в том, что создание пользовательского тега или чего-то подобного не будет допустимым форматом 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 (я использовал тег вложения, но еще не сделал расчет размера файла, поэтому я использовал заполнитель):

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