<?php
add_action("publish_post", "eg_create_sitemap");
add_action("save_post", "eg_create_sitemap");
add_action("edit_post", "eg_create_sitemap");
function eg_create_sitemap() {
$postsForSitemap = get_posts(array(
'numberposts' => -1,
'category__in' => array(794,817,812,806),
'orderby' => 'post_date',
'post_type' => array('post'),
'order' => 'DESC',
'post_status' => 'publish'
));
$sitemap = '<?xml version="1.0" encoding="utf-8"?>'."\n";
$sitemap .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:review="http://www.google.com/schemas/">'."\n";
global $wpdb, $post;
foreach($postsForSitemap as $post)
{
setup_postdata($post);
$post_id = $post->ID;
$postDate = $post->post_date;
$postContent = htmlspecialchars($post->post_excerpt);
$postName = htmlspecialchars($post->post_name);
$posttitle = htmlspecialchars($post->post_title);
$postURL = get_permalink( $post->ID );
$postAuthor = get_the_author();
$postCategories = get_the_category($post_id);
$reviewScore = $wpdb->query(
$wpdb->prepare(
"SELECT review FROM tableName_gdsr_data_article WHERE post_id = '$post_id'"
)
);
$reviewMaxScore = 5;
$omdomePros = get_post_meta($post->ID, 'omdome_pros', true);
$omdomePros = str_replace('<br />', ',', $omdomePros);
$omdomePros = str_replace(' ', '', $omdomePros);
$omdomePros = strip_tags($omdomePros);
$omdomeProsArray = explode(',', $omdomePros);
$omdomeCons = get_post_meta($post->ID, 'omdome_cons', true);
$omdomeCons = str_replace('<br />', ',', $omdomeCons);
$omdomeCons = str_replace(' ', '', $omdomeCons);
$omdomeCons = strip_tags($omdomeCons);
$omdomeConsArray = explode(',', $omdomeCons);
$productName = get_post_meta($post->ID, 'pricerunner_productName', true);
$productCat = get_post_meta($post->ID, 'pricerunner_productCatID', true);
$gameFormat = get_post_meta($post->ID, 'gameDetails_format', true);
$gameGenre = get_post_meta($post->ID, 'gameDetails_genre', true);
$gameDeveloper = get_post_meta($post->ID, 'gameDetails_utvecklare', true);
$gameDistributor = get_post_meta($post->ID, 'gameDetails_utgivare', true);
$gamePlayers = get_post_meta($post->ID, 'gameDetails_antalSpelare', true);
$sitemap .= '<review id="'.$post_id.'">'."\n".
"\t".'<url>'. $postURL .'</url>'."\n".
"\t".'<title>'. $posttitle .'</title>'."\n".
"\t".'<date>'. $postDate .'</date>'."\n".
"\t".'<author>'. $postAuthor .'</author>'."\n".
"\t".'<summary>'. $postContent .'</summary>'."\n".
"\t".'<score>'. $reviewScore .'</score>'."\n".
"\t".'<max-score>'. $reviewMaxScore .'</max-score>'."\n";
if ($postCategories) {
foreach($postCategories as $postCategory) {
$catcat = $postCategory->cat_name;
// If the parent category is Teknik
if($catcat == "Teknik") {
$sitemap .= "\t".'<pricerunnerName>'. $productName .'</pricerunnerName>'."\n";
$sitemap .= "\t".'<pricerunnerID>'. $productCat .'</pricerunnerID>'."\n";
if($omdomeProsArray) {
foreach($omdomeProsArray as $prosArray) {
$sitemap .= "\t".'<pros>'.$prosArray.'</pros>'."\n";
}
}
if($omdomeConsArray) {
foreach($omdomeConsArray as $consArray) {
$sitemap .= "\t".'<cons>'.$consArray.'</cons>'."\n";
}
}
}
// If the parent category is Spel
if($catcat == "Spel") {
if($omdomeProsArray) {
foreach($omdomeProsArray as $prosArray) {
$sitemap .= "\t".'<pros>'.$prosArray.'</pros>'."\n";
}
}
if($omdomeConsArray) {
foreach($omdomeConsArray as $consArray) {
$sitemap .= "\t".'<cons>'.$consArray.'</cons>'."\n";
}
}
$sitemap .= "\t".'<format>'. $gameFormat .'</format>'."\n";
$sitemap .= "\t".'<genre>'. $gameGenre .'</genre>'."\n";
$sitemap .= "\t".'<developer>'. $gameDeveloper .'</developer>'."\n";
$sitemap .= "\t".'<distributor>'. $gameDistributor .'</distributor>'."\n";
$sitemap .= "\t".'<players>'. $gamePlayers .'</players>'."\n";
}
}
}
if ($postCategories) {
foreach($postCategories as $postCategory) {
$sitemap .= "\t".'<category>'.$postCategory->cat_name.'</category>'."\n";
}
}
$sitemap .='</review>'."\n";
}
$sitemap .= '</urlset>';
$fp = fopen(ABSPATH . "reviews.xml", 'w');
fwrite($fp, $sitemap);
fclose($fp);
}
?>