我正在使用我的WordPress RSS Feed在MailChimp中设置RSS to email活动,我想在我的MailChimp模板中包含精选图片。 我已经尝试使用它来添加图像,这是有效的,但它只是将其添加到内容中,这对RSS代码的MailChimp部分不起作用:
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/
答案 0 :(得分:27)
我经常需要为MailChimp创建自定义订阅源,并且发现很多时候我必须进行一些“hacky”更改,例如将自定义值放入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; ?>
然后,您可以使用*|RSSITEM:IMAGE|*
或*|FEEDITEM:IMAGE|*
合并代码在MailChimp中抓取此内容。
答案 1 :(得分:0)
似乎有很多关于如何将图像添加到Feed中内容顶部的示例,但是在创建新标记的位置不是太多。一个潜在的问题是创建自定义标签或类似的东西将不是有效的RSS格式。如果您正在为自己的使用创建XML文档,那么如果Feed验证则无关紧要。这就是我所做的,你应该能够轻松地为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 } ?>