2012-02-03 32 views
7

Tôi đang thiết lập chiến dịch RSS để gửi email trong MailChimp bằng nguồn cấp dữ liệu Wordpress của mình và tôi muốn đưa hình ảnh nổi bật vào mẫu thư của tôi. Tôi đã cố gắng sử dụng này để thêm các hình ảnh, hoạt động, nhưng nó chỉ đơn giản là thêm nó vào nội dung mà không làm việc cho phần MailChimp của mã RSS:Thêm hình ảnh nổi bật wordpress vào nguồn cấp dữ liệu 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'); 

Rõ ràng MailChimp muốn nó "sở hữu" yếu tố hình ảnh độc đáo. Dưới đây là ví dụ về những gì họ muốn: http://kb.mailchimp.com/article/how-can-i-format-the-image-content-in-my-rss-to-email-campaigns

nhưng có vẻ như nó ở định dạng RSS khác. Đây là những gì RSS của tôi xuất ra: http://pacmissions.org/dev/missions/zimbabwe-2012/feed/

Trả lời

25

Tôi thường phải tạo nguồn cấp dữ liệu tùy chỉnh cho MailChimp và thấy rằng có rất nhiều thời gian tôi phải thực hiện một số thay đổi 'hacky' như đặt giá trị tùy chỉnh vào các trường chuẩn hạn chế MailChimp hỗ trợ.

Vì lý do này, tôi muốn sử dụng phương pháp được mô tả tại Yoast (http://yoast.com/custom-rss-feeds-wordpress/) để tạo trang xuất ra nguồn cấp dữ liệu RSS tùy chỉnh.

Có một vài điều chỉnh để thực hiện để có được hình ảnh nổi bật được bao gồm dưới dạng trường mà MailChimp sẽ nhận ra.

Trước hết bạn cần phải thêm không gian tên Media RSS, mà tôi thường làm bằng cách thêm vào việc mở <rss> tag:

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

Sau đó để bao gồm các hình ảnh đặc trưng bên trong mục:

<?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; ?> 

Nếu bạn cần chỉ định kích thước hình ảnh cụ thể để bao gồm, bạn sẽ cần sử dụng mã này bên trong mục thay thế:

<?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; ?> 

Sau đó, bạn có thể lấy thông tin này trong MailChimp bằng cách sử dụng các thẻ hợp nhất *|RSSITEM:IMAGE|* hoặc *|FEEDITEM:IMAGE|*.

0

Dường như có nhiều ví dụ về cách thêm hình ảnh vào đầu nội dung trong nguồn cấp dữ liệu nhưng không quá nhiều nơi bạn đang tạo thẻ mới. Một vấn đề tiềm năng là việc tạo một thẻ tùy chỉnh hoặc một cái gì đó tương tự sẽ không phải là một định dạng RSS hợp lệ. Nếu bạn đang tạo một tài liệu XML cho việc sử dụng của riêng bạn, nó không quan trọng quá nhiều nếu nguồn cấp dữ liệu hợp lệ hóa. Đây là những gì tôi đã làm, và bạn có thể dễ dàng sửa đổi nó một chút cho trường hợp sử dụng MailChimp. Hãy cho tôi biết nếu bạn vẫn cần trợ giúp sau này.

Trong functions.php (bên trong thư mục theme ... wp-content/themes/...):

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]; 
} 

Trong wp-includes/feed-rss2.php (I đã sử dụng thẻ bao, nhưng chưa thực hiện tính toán kích thước tệp, vì vậy tôi đã sử dụng trình giữ chỗ)

<?php if (get_the_post_thumbnail($post->ID, 'thumbnail') != '') { ?><enclosure <?php echo 'url="' . insertImageRSS() . '"'; ?> length="1000" type="image/jpeg" /><?php } ?> 
Các vấn đề liên quan