Mailchimp nyhetsbrev med RSS från Wordpress

I veckan har jag suttit och klurat ut hur man får Mailchimp att hämta info från RSS-feeds på ens WordPress-sida och lägger till det tjusigt i ett nyhetsbrev.

Wordpress

Först och främst behöver man lite olika feeds. Man kan ju redan hämta feeds genom att knacka in /feed efter sin adress som tex. https://snillrik.se/feed/

Man kan också ha från kategorier som tex. https://snillrik.se/category/referenser/feed/

Men om man vill få lite latjo så vill man kunna ha lite offset, så att man kan skippa den första eller de 4 första eller så. 

Jag ville till exempel ha offset, bilder och bildstorlek, dvs så jag kunde göra så här:
https://snillrik.se/feed/?imagesize=large
https://snillrik.se/feed/?offset=4&imagesize=medium
osv. 

Det får man lägga till i förslagsvis functions.php i sitt tema. Jag har lagt till de här:

// display featured post thumbnails in WordPress feeds
function snillrik_post_thumbnails_in_feeds( $content ) {
    global $post;
    if( has_post_thumbnail( $post->ID ) ) {
        $content = '<p>' 
            . get_the_post_thumbnail( $post->ID ) 
            . '</p>' 
            . $content;    
    }
    return $content;
}
add_filter( 'the_excerpt_rss', 'snillrik_post_thumbnails_in_feeds' );
add_filter( 'the_content_feed', 'snillrik_post_thumbnails_in_feeds' );

function snillrik_add_rss_image() {
    global $post;
    $output = '';
    if ( has_post_thumbnail( $post->ID ) ) {
        $thumbnail_ID = get_post_thumbnail_id( $post->ID );
        if (isset($_GET['imagesize']) && is_feed()) {
            $thumbnail = wp_get_attachment_image_src($thumbnail_ID,sanitize_text_field($_GET['imagesize']));
        }
        else{
            $thumbnail = wp_get_attachment_image_src( $thumbnail_ID);
        }
        $output .= '<media:content xmlns:media="http://search.yahoo.com/mrss/" medium="image" type="image/jpeg"';
        $output .= ' url="'. $thumbnail[0] .'"';
        $output .= ' width="'. $thumbnail[1] .'"';
        $output .= ' height="'. $thumbnail[2] .'"';
        $output .= ' ></media:content>';
    }
    echo $output;
}
add_action( 'rss2_item', 'snillrik_add_rss_image' );

function snillrik_pre_rss($query) {
    if (isset($_GET['offset']) && is_feed()) {
        $query->set('offset', sanitize_text_field($_GET['offset']));
    }
    return $query;
}
add_action('pre_get_posts', 'snillrik_pre_rss');

Mailchimp

I MailChimp får man välja att göra en kampanj som är automated. Man klickar sig alltså fram till Create Campain -> Email -> Automated och väljer Share blog updates.

Skillnaden mellan en vanlig kampanj och att den är automated är att man får ett par nya block, bland annat RSS Items som gör att man kan hämta information från RSS-feeds och formatera dem med HTML och RSS-Items. 

Jag ville tex. ha ett block med en stor bild överst:

*|FEEDBLOCK:https://snillrik.se/feed/?imagesize=large|* *|FEEDITEMS:[$count=1, $constrain_rss_img=Y]|*
<style type="text/css">img{max-width:100%";}
</style>
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>*|FEEDITEM:IMAGE|*
<h2>*|FEEDITEM:TITLE|*</h2>
<small><em>*|FEEDITEM:AUTHOR|* - *|FEEDITEM:DATE|* </em></small><br />
*|FEEDITEM:CONTENT_TEXT|*</td>
</tr>
</tbody>
</table>
*|END:FEEDITEMS|* *|END:FEEDBLOCK|*

Sen ville jag ha ett block med 3 stycken items i ett table där det var en liten bild till vänster och texten till höger. 

<h2><span style=”font-size:13px”>*|FEEDBLOCK:https://snillrik.se/feed/?offset=1|* *|FEEDITEMS:[$count=3, $constrain_rss_img=Y]|*</span></h2><table border=”0″ cellpadding=”0″ cellspacing=”0″>
<tbody>
<tr>
<td width=”100″>*|FEEDITEM:IMAGE|*</td>
<td style=”padding-left:10px”>
<h2>*|FEEDITEM:TITLE|*</h2>
<small><em>*|FEEDITEM:AUTHOR|* – *|FEEDITEM:DATE|* </em></small><br />
*|FEEDITEM:CONTENT_TEXT|*</td>
</tr>
</tbody>
</table>
*|END:FEEDITEMS|* *|END:FEEDBLOCK|*<br />