2012-12-09 14 views
5

स्क्रिप्ट के साथ कुछ गड़बड़ है जो एक वर्डप्रेस ब्लॉग से दूसरी पोस्ट को अलग-अलग डोमेन में कॉपी करता है।डब्ल्यू 3 सी आरएसएस त्रुटि एक ब्लॉग से दूसरे ब्लॉग में पोस्ट करने के बाद

सब कुछ ठीक काम करता है और हम एक वर्ष से अधिक के लिए स्क्रिप्ट का उपयोग कर रहे हैं। फिर भी, कॉपी की गई पोस्ट के लिए आरएसएस फ़ीड डब्ल्यू 3 सी द्वारा कभी मान्य नहीं है।

ठेठ उन पदों के लिए W3C द्वारा दिखाया गया त्रुटि, इस एक है:

इस फ़ीड को मान्य नहीं करता। लाइन 25, कॉलम 43: पबडेट एक आरएफसी -822 दिनांक-समय होना चाहिए: बुध, 30 नवंबर -0001 00:00:00 +0000 [सहायता] बुध, 30 नवंबर -0001 00:00:00 +0000 इन अतिरिक्त सिफारिशों को लागू करके फ़ीड पाठकों की विस्तृत श्रृंखला के साथ अंतःक्रियाशीलता में सुधार किया जा सकता है। लाइन 28, कॉलम 28: GUID खाली (8 घटनाओं) नहीं होना चाहिए [सहायता]

स्क्रिप्ट के बाहर मार डाला जाता है और WP कार्यों या wpdb वर्ग के लिए पहुँच नहीं है।

सभी कार्य एक कक्षा में हैं। यहां कोड है:

/** 

*/ 
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; 
    } 
    } 
} 

मैं इस समस्या को हल करने का तरीका नहीं समझ सकता और आपके द्वारा किसी भी मदद की सराहना करता हूं।

+0

¿क्या आप पोस्ट में कोई तारीख देखते हैं? यदि हां, प्रारूप और मूल्य कैसा है। –

+0

यह अजीब चीज़ों में से एक है। प्रारूप सही है और पोस्ट की तारीख थी। –

उत्तर

0

डब्ल्यू 3 सी त्रुटि दिखा रहा है कि दिनांक प्रारूप गलत है और guid गुम है।

पहले त्रुटि पोस्ट बनाने इन क्षेत्रों को जोड़ने के हल किया जा सकता:

:

post_date_gmt और post_modified_gmt

दूसरी ओर, guid के बारे में सिफारिश इस क्षेत्र को जोड़ने पूरी की जा सकती guid

इस तरह

:

public function SavePostTarget($PostTitle, $PostContent, $AuthorID, $PostSlug, $PostType) { 

    $PostDate = new DateTime(date('Y-m-d H:i:s')); 
    $PostTitle = str_replace("'", '"', $PostTitle); 

    $GMTDate = gmdate('Y-m-d H:i:s'); // ADDED - GMT Date Time should be included to avoid RSS errors 
    $TargetHost = 'TargetDomain.com'; // ADDED 
    $PostGuid = "$TargetHost/$PostSlug"; // ADDED - Guid should be included to avoid RSS errors 

    $SavePostQuery = "INSERT INTO wp_posts (
    post_title, 
    post_content, 
    post_author, 
    post_name, 
    post_type, 
    post_date, 
    post_modified, 
    post_status, 
    post_date_gmt, 
    post_modified_gmt, 
    guid 
    ) 
    VALUES (
    '" . $PostTitle . "', 
    '" . $PostContent . "', 
    '" . $AuthorID . "', 
    '" . $PostSlug . "', 
    '" . $PostType . "', 
    '" . $PostDate->format('Y-m-d H:i:s') . "', 
    '" . $PostDate->format('Y-m-d H:i:s') . "', 
    'publish', 
    '" . $GMTDate . "', 
    '" . $GMTDate . "', 
    '" . $PostGuid . "' 
    )"; 

    ... 
+0

मैं इसे आज़माउंगा। धन्यवाद! –

+0

बढ़िया! उसने ऐसा किया आपके समय और मदद के लिए बहुत बहुत धन्यवाद। मुझे नहीं लगता था कि इसकी जरूरत थी। –

+0

आपका स्वागत है। –

संबंधित मुद्दे