Wordpress XMLRPC возвращает пустой, но успешный


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

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

    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;

}

Строка echo '<pre>'.print_r($re... просто показывает <pre></pre>. У меня есть savd подробный вывод curl в a файл, пожалуйста, найдите его ниже (я выделил 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

Как я уже сказал, код публикуется, но ничего не возвращается. Извините за прямоту, но я знаю, что это вызовет поток бессмысленных ответов. Итак, должен ли я ожидать, что почтовый идентификатор будет возвращен, и если нет, то как я могу легко получить его обратно?

Спасибо

2 3

2 ответа:

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

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

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

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

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