2010-12-23 11 views
3

Ich versuche, auf WordPress mit curl über PHP zu posten - ich poste mit dem XMLRPC standardmäßig in Wordpress eingebaut.Wordpress XMLRPC Rückgabe leer, aber erfolgreich

Buchung ist erfolgreich mit dem folgenden Code, aber nichts zurückgegeben wird. Ich muss einige Informationen über den Beitrag wissen, wie zum Beispiel seine URL - ich kann dies tun, wenn ich die "Post-ID" habe, die durch Betrachten der xmlrpc.php-Datei zurückgegeben werden sollte. Unten ist mein Code für die Buchung:

function post($username, $password, $title, $content, $url, $category=array(), $keywords='', $type='Wordpress') 
{ 
    $encoding = 'UTF-8'; 

    $title = htmlentities($title,ENT_NOQUOTES,$encoding); 
    $keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding); 

    $reqparams = array(
     'title'=>$title, 
     'description'=>$content, 
     'mt_allow_comments'=>0, // 1 to allow comments 
     'mt_allow_pings'=>0, // 1 to allow trackbacks 
     'post_type'=>'post', 
     'mt_keywords'=>$keywords, 
     'categories'=>$category 
    ); 
    $params = array(0,$username,$password,$reqparams,true); 
    $request = xmlrpc_encode_request('metaWeblog.newPost',$params); 
    $ch = curl_init(); 

    $fp = fopen('/home/*/public_html/file.txt', 'w+'); 

    curl_setopt($ch, CURLOPT_POSTFIELDS, $request); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 1); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    curl_setopt($ch, CURLOPT_STDERR, $fp); 
    $results = curl_exec($ch); 
    echo '<pre>'.print_r($results, true).'</pre>'; 
    curl_close($ch); 
    return $results; 

} 

Die echo '<pre>'.print_r($re... Linie <pre></pre> gerade zeigt. Ich savd haben die ausführliche Ausgabe von curl in eine Datei, bitte unten finden (ich habe die URL spielte out):

* About to connect() to www.*******.com port 80 (#0) 
* Trying 87.106.55.179... * connected 
* Connected to www.*******.com (87.*.*.179) port 80 (#0) 
> POST /xmlrpc.php HTTP/1.1 
Host: www.*******.com 
Accept: */* 
Content-Length: 1445 
Content-Type: application/x-www-form-urlencoded 
Expect: 100-continue 

< HTTP/1.1 100 Continue 
* Operation timed out after 1000 milliseconds with 0 bytes received 
* Closing connection #0 

Wie gesagt, die CODE DOES POST, aber nichts zurückgegeben. Es tut mir leid, unverblümt zu sein, aber ich weiß, dass es einen Strom von sinnlosen Antworten geben wird. Also, sollte ich erwarten, dass eine Post-ID zurückgegeben wird, und wenn nicht, wie kann ich sie einfach zurückbekommen?

Dank

Antwort

4

Sod Gesetz. Nach dem Posten habe ich versucht, die maximale Timeout-Zeit zu ändern: curl_setopt($ch, CURLOPT_TIMEOUT, 1); zu 10: curl_setopt($ch, CURLOPT_TIMEOUT, 10); und ich bekomme ein paar nette XML zurückgegeben mit der Post-ID eingebettet.

Ich habe diesen Beitrag nicht gelöscht, da ich dachte, dass es für jemanden nützlich sein könnte.

-2

Es wird ($ Ergebnisse) die Ergebnisse als xml zurückgeben ... Ich denke in Ihrem Programm wird es nichts auf dem Bildschirm anzeigen (Aber Sie können diese XML-Daten im Quellcode des Ausgabebildschirms sehen) .. Sie sollten verwenden xmlrpc_decode oder XML-Parsing-Funktion, um die Daten von zurückgegebenen XML zu erhalten. In Ihrem Programm wird es die neu erstellte Post-ID zurückgeben.

für Ihr Programm, ich denke Folowing Änderungen vor

$results = curl_exec($ch); 
$results = xmlrpc_decode($results); 
echo '<pre>'.print_r($results, true).'</pre>'; 
+2

Beantwortet Alter die Arbeit machen, scheint eine sinnlose Antwort zu sein nur eine noch sinnlos Link zu posten. -1 – Mike

Verwandte Themen