Howdy! This importer allows you to extract posts from any RSS 2.0 file into your blog. This is useful if you want to import your posts from a system that is not handled by a custom import tool. To get started you must edit the following line in this file (import-rss.php
)
define('RSSFILE', '');
You want to define where the RSS file we'll be working with is, for example:
define('RSSFILE', 'rss.xml');
You have to do this manually for security reasons.
If you've done that and you’re all ready, let's go!
previous page to continue.");
// Bring in the data
set_magic_quotes_runtime(0);
$datalines = file(RSSFILE); // Read the file into an array
$importdata = implode('', $datalines); // squish it
$importdata = str_replace(array("\r\n", "\r"), "\n", $importdata);
preg_match_all('|- (.*?)
|is', $importdata, $posts);
$posts = $posts[1];
echo '';
foreach ($posts as $post) :
$title = $date = $categories = $content = $post_id = '';
echo "- Importing post... ";
preg_match('|(.*?)|is', $post, $title);
$title = addslashes( trim($title[1]) );
$post_name = sanitize_title($title);
preg_match('|(.*?)|is', $post, $date);
$date = strtotime($date[1]);
if (!$date) : // if we don't already have something from pubDate
preg_match('|(.*?)|is', $post, $date);
$date = preg_replace('|(-[0-9:]+)$|', '', $date[1]);
$date = strtotime($date);
endif;
$post_date = date('Y-m-d H:i:s', $date);
preg_match_all('|(.*?)|is', $post, $categories);
$categories = $categories[1];
if (!$categories) :
preg_match_all('|(.*?)|is', $post, $categories);
$categories = $categories[1];
endif;
preg_match('|(.*?)|is', $post, $content);
$content = str_replace( array(''), '', addslashes( trim($content[1]) ) );
if (!$content) : // This is for feeds that put content in description
preg_match('|(.*?)|is', $post, $content);
$content = addslashes( trim($content[1]) );
endif;
// Now lets put it in the DB
if ($wpdb->get_var("SELECT ID FROM $tableposts WHERE post_title = '$title' AND post_date = '$post_date'")) :
echo 'Post already imported';
else :
$wpdb->query("INSERT INTO $tableposts
(post_author, post_date, post_date_gmt, post_content, post_title,post_status, comment_status, ping_status, post_name)
VALUES
('$post_author', '$post_date', DATE_ADD('$post_date', INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE), '$content', '$title', 'publish', '$comment_status', '$ping_status', '$post_name')");
$post_id = $wpdb->get_var("SELECT ID FROM $tableposts WHERE post_title = '$title' AND post_date = '$post_date'");
if (!$post_id) die("couldn't get post ID");
if (0 != count($categories)) :
foreach ($categories as $post_category) :
// See if the category exists yet
$cat_id = $wpdb->get_var("SELECT cat_ID from $tablecategories WHERE cat_name = '$post_category'");
if (!$cat_id && '' != trim($post_category)) {
$cat_nicename = sanitize_title($post_category);
$wpdb->query("INSERT INTO $tablecategories (cat_name, category_nicename) VALUES ('$post_category', '$cat_nicename')");
$cat_id = $wpdb->get_var("SELECT cat_ID from $tablecategories WHERE cat_name = '$post_category'");
}
if ('' == trim($post_category)) $cat_id = 1;
// Double check it's not there already
$exists = $wpdb->get_row("SELECT * FROM $tablepost2cat WHERE post_id = $post_id AND category_id = $cat_id");
if (!$exists) {
$wpdb->query("
INSERT INTO $tablepost2cat
(post_id, category_id)
VALUES
($post_id, $cat_id)
");
}
endforeach;
else:
$exists = $wpdb->get_row("SELECT * FROM $tablepost2cat WHERE post_id = $post_id AND category_id = 1");
if (!$exists) $wpdb->query("INSERT INTO $tablepost2cat (post_id, category_id) VALUES ($post_id, 1) ");
endif;
echo 'Done!
';
endif;
endforeach;
?>