-
-
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! 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
Thank you!