-
-
Save Jamesking56/4773838 to your computer and use it in GitHub Desktop.
| <?php | |
| /** | |
| * WordPress class - Manages the WordPress XML file and gets all data from that. | |
| */ | |
| class Wordpress | |
| { | |
| public static $wpXML; | |
| function __construct($wpXML) | |
| { | |
| $this->wpXML = $wpXML; | |
| } | |
| public function getPosts() | |
| { | |
| $xml = simplexml_load_file($this->wpXML); | |
| $posts = array(); | |
| foreach($xml->channel->item as $item) | |
| { | |
| $categories = array(); | |
| foreach($item->category as $category) | |
| { | |
| //echo $category['domain']; | |
| if($category['nicename'] != "uncategorized" && $category['domain'] == "category") | |
| { | |
| //echo 'Yep'; | |
| $categories[] = $category['nicename']; | |
| } | |
| } | |
| $content = $item->children('http://purl.org/rss/1.0/modules/content/'); | |
| $posts[] = array( | |
| "title"=>$item->title, | |
| "content"=>$content->encoded, | |
| "pubDate"=>$item->pubDate, | |
| "categories"=>implode(",", $categories), | |
| "slug"=>str_replace("/", "", str_replace("http://blog.jamesking56.co.uk/", "", $item->guid)) | |
| ); | |
| } | |
| return $posts; | |
| } | |
| } | |
| ?> |
Thank you!
Thank you! I've optimized it a bit, added tags and both tags and categories now return the display value as well. Also removed all SimpleXmlElements by type-casting to string:
foreach ($xml->channel->item as $item) {
$categories = array();
$tags = [];
foreach ($item->category as $category) {
if ($category['nicename'] != "uncategorized" && $category['domain'] == "category") {
$categories[(string)$category['nicename']] = (string)$category;
} elseif ($category['domain'] == 'post_tag') {
$tags[(string)$category['nicename']] = (string)$category;
}
}
$content = $item->children('http://purl.org/rss/1.0/modules/content/');
$posts[] = array(
"title" => (string)$item->title,
"content" => (string)$content->encoded,
"pubDate" => new DateTime((string)$item->pubDate),
"categories" => $categories,
"tags" => $tags,
"slug" => (string)$item->guid
);
}
@tricoos Wow I wrote this in 2013 I am surprised it still works!
Thank you for this. Yes, it's still working in 2019. Do you know how to parse the metadata from the XML as well? Thanks!
@cristianfx I am amazed this still works in 2019. Metadata could probably be parsed in a similar way.
Really cool function, thanks a lot!
Anybody else getting these errors?
simplexml_load_file(): I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8" ?>
Anybody else getting these errors?
simplexml_load_file(): I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8" ?>
See this StackOverflow answer: https://stackoverflow.com/a/21661663/941446
Thanks for this, it's been extremely useful, I had header been executed from my xml file must have been from the content wrapping the content in htmlentities solved that.
I also added a excerpt: