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 ответа:
Закон дерна. После публикации я попытался изменить максимальное время ожидания:
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>';