Wordpress XMLRPC возвращается пустым, но успешно - PullRequest
3 голосов
/ 23 декабря 2010

Я пытаюсь отправлять сообщения в WordPress с помощью curl через PHP - я отправляю сообщения с использованием XMLRPC, встроенного в Wordpress по умолчанию.

Отправка выполняется успешно с помощью приведенного ниже кода, но ничего не возвращаетсяМне нужно знать некоторую информацию о посте, например, его URL - я могу сделать это, если у меня есть «идентификатор поста», который после просмотра файла xmlrpc.php должен вернуться.Ниже мой код для публикации:

<code>    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).'
';curl_close ($ ч);вернуть $ результаты;}

В строке echo '<pre>'.print_r($re... просто отображается .Я сохранил подробный вывод curl в файл, пожалуйста, найдите его ниже (я пометил URL):

* 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

Как я уже сказал, CODE POST, НО НИЧЕГО НЕ ЯВЛЯЕТСЯВЕРНУТЬ .Извините за грубость, но я знаю, что это начнется с потока бессмысленных ответов.Итак, я должен ожидать, что будет возвращен почтовый идентификатор, и если нет, то как я могу легко вернуть его?

Спасибо

Ответы [ 2 ]

4 голосов
/ 23 декабря 2010

закон Сода.После публикации я попытался изменить максимальное время ожидания: curl_setopt($ch, CURLOPT_TIMEOUT, 1); на 10: curl_setopt($ch, CURLOPT_TIMEOUT, 10);, и я получил хороший XML-код с вложенным идентификатором записи.

Я не удалил это сообщение, так как думал, что оно можетбыть полезным для кого-то.

0 голосов
/ 30 июля 2011

Он вернет ($ results) результаты в виде xml ... Я думаю, что в вашей программе ничего не будет отображаться на экране (но вы можете видеть, что данные xml в исходном коде экрана вывода) .. Вы должны использовать xmlrpc_decodeили функция синтаксического анализа XML для получения данных из возвращенного XML. В вашей программе он вернет вновь созданный идентификатор записи.

Я думаю, что для вашей программы следующие изменения сделают всю работу

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