Skip to content

Instantly share code, notes, and snippets.

@betweenbrain
Created April 17, 2013 16:26
Show Gist options
  • Select an option

  • Save betweenbrain/5405671 to your computer and use it in GitHub Desktop.

Select an option

Save betweenbrain/5405671 to your computer and use it in GitHub Desktop.
Use cURL and SimpleXML to retrieve and parse Wordpress RSS feed
<?php
$curl = curl_init();
curl_setopt_array($curl, Array(
CURLOPT_URL => 'http://blogs.guggenheim.org/map/feed/',
CURLOPT_USERAGENT => 'spider',
CURLOPT_TIMEOUT => 120,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_ENCODING => 'UTF-8'
));
$data = curl_exec($curl);
curl_close($curl);
$xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
//die('<pre>' . print_r($xml], TRUE) . '</pre>');
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<?php foreach ($xml->channel->item as $item) {
$creator = $item->children('dc', TRUE);
echo '<h2>' . $item->title . '</h2>';
echo '<p>Created: ' . $item->pubDate . '</p>';
echo '<p>Author: ' . $creator . '</p>';
echo '<p>' . $item->description . '</p>';
echo '<p><a href="' . $item->link . '">Read more: ' . $item->title . '</a></p>';
}
?>
</body>
</html>
@daniellabirch

Copy link
Copy Markdown

This saved my day! Thanks for posting!

@pumamammal

Copy link
Copy Markdown

I love you, You just made my day, so customization. Let me contribute

@WilliamIsted

Copy link
Copy Markdown

Nice to find a simple working solution. Thanks

@fcava10

fcava10 commented Oct 1, 2016

Copy link
Copy Markdown

Please,
how to display only "two posts"?
display the image Article
and
description with fewer characters
put the article link in the description

@fcavanha10

Copy link
Copy Markdown

Please,
how to display only "two posts"?
display the image Article
and
description with fewer characters
put the article link in the description

@xrobachok

Copy link
Copy Markdown

@fcavanha10,

how to display only "two posts"?

Go to http://your-blog-site-url-here/wp-admin/options-reading.php and select 2 items for news.

how to display the image Article and description with fewer characters put the article link in the description

Add Featured Image to RSS
Go to your theme folder and add next code to your functions.php file:

/**
 * Add Featured Image as a separate RSS item.
 *
 */
add_action('rss2_item', 'add_featured_image_node');

function add_featured_image_node() {
    global $post;
    if(has_post_thumbnail($post->ID)):
        $thumbnail = get_the_post_thumbnail( $post->ID );
        echo("  <featuredImage>{$thumbnail}</featuredImage>\n");
    endif;
}

Display Featured Image and other information you want
Copy the code from the first post at this page (see above gistfile1.php) and replace foreach cycle with next code:

foreach ($xml->channel->item as $item) {
    echo '<h2><a href="' . $item->link . '">' . $item->title . '</a></h2>';
    echo '<img src="' . $item->featuredImage->img['src'] . '" width="100" height="100" alt="' . $item->featuredImage->img['src'] . '" class="' . $item->featuredImage->img['class'] . '">';
    echo '<p>' . $item->description . '<a href="' . $item->link . '">Read more: ' . $item->title . '</a></p>';
}

You can modify an output HTML code for your purposes and style it with CSS.

@leokovaski

leokovaski commented Apr 7, 2017

Copy link
Copy Markdown

I'm wrong: Warning: Invalid argument supplied for foreach() in

@pumamammal

Copy link
Copy Markdown

I left coding a while because the project I was on broke. Now I'm back. seeing a code I fork amazes me. Thanks

@PascaleBeier

Copy link
Copy Markdown

CURLOPT_ENCODING does not actually mean what you think it means:

http://php.net/manual/de/function.curl-setopt.php

ghost commented Oct 6, 2017

Copy link
Copy Markdown

Amazing !!!
Very helpful script saving lots of work and server request.

@alyaspk

alyaspk commented May 17, 2018

Copy link
Copy Markdown

Thank you so much, this has saved by day as well :)

@heyitsnovi

Copy link
Copy Markdown

Nice.... 100% working :) thank you 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment