是一个优秀的语义个人发布平台

源代码在线查看: import-rss.php

软件大小: 234 K
上传用户: hslhsl123
关键词: 发布
下载地址: 免注册下载 普通下载 VIP

相关代码

								define('RSSFILE', '');
				// Example:
				// define('RSSFILE', '/home/example/public_html/rss.xml');
				// or if it's in the same directory as import-rss.php
				// define('RSSFILE', 'rss.xml');
				
				$post_author = 1; // Author to import posts as author ID
				$timezone_offset = 0; // GMT offset of posts your importing
				
				function unhtmlentities($string) { // From php.net for < 4.3 compat
				   $trans_tbl = get_html_translation_table(HTML_ENTITIES);
				   $trans_tbl = array_flip($trans_tbl);
				   return strtr($string, $trans_tbl);
				}
				
				$add_hours = intval($timezone_offset);
				$add_minutes = intval(60 * ($timezone_offset - $add_hours));
				
				if (!file_exists('../wp-config.php')) die("There doesn't seem to be a wp-config.php file. You must install WordPress before you import any entries.");
				require('../wp-config.php');
				
				$step = $_GET['step'];
				if (!$step) $step = 0;
				?>
				
				
				WordPress › Import from RSS
				
				
					body {
						font-family: Georgia, "Times New Roman", Times, serif;
						margin-left: 20%;
						margin-right: 20%;
					}
					#logo {
						margin: 0;
						padding: 0;
						background-image: url(http://wordpress.org/images/logo.png);
						background-repeat: no-repeat;
						height: 60px;
						border-bottom: 4px solid #333;
					}
					#logo a {
						display: block;
						text-decoration: none;
						text-indent: -100em;
						height: 60px;
					}
					p {
						line-height: 140%;
					}
					
				 
				WordPress 
								switch($step) {
				
					case 0:
				?> 
				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. When you're done reload this page and we'll take you to the next step.
				
				Begin RSS Import »
				
									break;
				
					case 1:
				
				// 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 = gmdate('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 = $wpdb->escape( unhtmlentities( trim($content[1]) ) );
				endif;
				
				// Clean up content
				$content = preg_replace('|				$content = str_replace('', '', $content);
				$content = str_replace('', '', $content);
				
				// This can mess up on posts with no titles, but checking content is much slower
				// So we do it as a last resort
				if ('' == $title) : 
					$dupe = $wpdb->get_var("SELECT ID FROM $tableposts WHERE post_content = '$content' AND post_date = '$post_date'");
				else :
					$dupe = $wpdb->get_var("SELECT ID FROM $tableposts WHERE post_title = '$title' AND post_date = '$post_date'");
				endif;
				
				// Now lets put it in the DB
				if ($dupe) :
					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) :
						$post_category = unhtmlentities($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;
				?>
				
				
				All done. Have fun!
									break;
				}
				?> 
				
							

相关资源