C'è qualcosa di sbagliato nello script che copia gli ultimi messaggi da un blog Wordpress a un altro in domini diversi.Errore RSS W3C dopo aver copiato i post da un blog all'altro
Tutto funziona correttamente e abbiamo utilizzato la sceneggiatura per oltre un anno. Tuttavia, i feed RSS per i post copiati non vengono mai convalidati da W3C.
L'errore tipico visualizzato da W3C per tali posti, è questa:
Questo feed non convalida. riga 25, colonna 43: pubDate deve essere un orario di data RFC-822: mer, 30 nov -0001 00:00:00 +0000 [aiuto] mer, 30 nov -0001 00:00:00 +0000 in Inoltre, l'interoperabilità con la più ampia gamma di lettori di feed potrebbe essere migliorata implementando la seguente raccomandazione. linea 28, colonna 28: guid non dovrebbe essere vuoto (8 occorrenze) [guida]
Lo script è eseguito al di fuori e non hanno accesso alle funzioni WP o la classe wpdb
.
Tutte le funzioni sono in una classe. Ecco il codice:
/**
*/
class CopyPostClass {
/**
* @param $PostTitle
* @param $PostContent
* @param $PostSlug
* @param $PostType
* @param $AuthorID
* @return bool
*/
public function SavePostTarget($PostTitle, $PostContent, $AuthorID, $PostSlug, $PostType) {
global $TargetLink;
$PostDate = new DateTime(date('Y-m-d H:i:s'));
$PostTitle = str_replace("'", '"', $PostTitle);
$SavePostQuery = "INSERT INTO wp_posts (
post_title,
post_content,
post_author,
post_name,
post_type,
post_date,
post_modified,
post_status
)
VALUES (
'" . $PostTitle . "',
'" . $PostContent . "',
'" . $AuthorID . "',
'" . $PostSlug . "',
'" . $PostType . "',
'" . $PostDate->format('Y-m-d H:i:s') . "',
'" . $PostDate->format('Y-m-d H:i:s') . "',
'publish'
)";
$SavePostResult = mysql_query($SavePostQuery, $TargetLink);
$SavedRows = mysql_affected_rows($TargetLink);
if ($SavePostResult && $SavedRows > 0) {
return TRUE;
}
else {
echo "ERROR Saving new post to target WP Blog!<br /><br />";
echo mysql_error() . "<br /><br />";
return FALSE;
}
}
/**
* @return resource
*/
public function ConnectSource() {
$SourceHost = 'SourceDomainn.com';
$SourceUsername = 'SourceDomainUserName';
$SourcePassword = 'SourceDomainPass';
$SourceDatabase = 'SourceDomainDataBase';
$SourceLink = mysql_connect($SourceHost, $SourceUsername, $SourcePassword);
mysql_select_db($SourceDatabase, $SourceLink) or die("Unable to select Source database");
mysql_set_charset('utf-8', $SourceLink);
if (!$SourceLink) {
echo "Conection to source WP Blog Database FAILED!<br /><br />";
die;
}
else {
return $SourceLink;
}
}
/**
* @return resource
*/
public function ConnectTarget() {
$TargetHost = 'TargetDomain.com';
$TargetUsername = 'TargetDomainUserName';
$TargetPassword = 'TargetDomainPass';
$TargetDatabase = 'TargetDomainDataBase';
$TargetLink = mysql_connect($TargetHost, $TargetUsername, $TargetPassword);
mysql_select_db($TargetDatabase, $TargetLink) or die("Unable to select Target database");
mysql_set_charset('utf-8', $TargetLink);
if (!$TargetLink) {
echo "Conection to target WP Blog Database FAILED!<br /><br />";
die;
}
else {
return $TargetLink;
}
}
}
io non riesco a capire come risolvere questo problema e potranno apprezzare alcun aiuto da voi.
¿Vedi qualche data nel post? In tal caso, come sono il formato e il valore. –
Questa è una delle cose più strane. Il formato è corretto ed è la data di creazione del post. –