Coś jest nie tak ze skryptem, który kopiuje ostatnie posty z jednego bloga Wordpress na inny w różnych domenach.Błąd W3C RSS po skopiowaniu wpisów z jednego bloga na inny
Wszystko działa dobrze i używamy skryptu od ponad roku. Mimo to kanały RSS dla skopiowanych postów nigdy nie są sprawdzane przez W3C.
Typowy błąd wyświetlany przez W3C do tych stanowisk, jest to jedno:
Ten kanał nie sprawdza. wiersz 25, kolumna 43: pubDate musi być datownikiem RFC-822: środa, 30 listopada - 0001 00:00:00 +0000 [pomoc] środa, 30 listopada - 0001 00:00:00 +0000 In Ponadto interoperacyjność z najszerszym zakresem czytników kanałów może zostać poprawiona poprzez wdrożenie następującego zalecenia. wiersz 28, kolumna 28: dnik nie powinno być puste (8 zdarzenia) [pomoc]
Skrypt jest wykonywany na zewnątrz i nie mają dostępu do funkcji WP lub klasy wpdb
.
Wszystkie funkcje są w klasie. Oto kod:
/**
*/
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;
}
}
}
Nie mogę wymyślić, jak rozwiązać ten problem i docenisz każdą pomoc od Ciebie.
¿Czy widzisz datę w poście? Jeśli tak, w jaki sposób jest format i wartość. –
To jedna z najdziwniejszych rzeczy. Format jest poprawny i jest datą utworzenia posta. –