我正在尝试使用curl通过PHP发布到WordPress - 我默认使用内置到Wordpress中的XMLRPC进行发布。
使用以下代码发布成功,但未返回任何内容。我需要知道关于帖子的一些信息,例如它的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>
。我已经将curl的详细输出写入文件,请在下面找到它(我已经出了网址):
* 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
正如我所说,代码发布,但没有返回。很抱歉直言不讳,但我知道这将引发一系列毫无意义的答案。那么,我应该期待一个帖子ID被退回,如果没有,我怎么能轻易地将它返回?
由于
答案 0 :(得分:4)
索德定律。发布后,我尝试将最大超时时间:curl_setopt($ch, CURLOPT_TIMEOUT, 1);
更改为10:curl_setopt($ch, CURLOPT_TIMEOUT, 10);
,我得到了一些很好的XML,其中嵌入了帖子ID。
我没有删除这篇文章,因为我觉得它可能对某人有用。
答案 1 :(得分:-2)
它将返回($ results)结果为xml ...我认为在你的程序中它不会在屏幕上显示任何内容(但你可以在输出屏幕的源代码中看到xml数据)..你应该使用xmlrpc_decode或XML解析函数从返回的XML中获取数据。在您的程序中,它将返回新创建的帖子ID。
对于您的计划,我认为以下更改将完成工作
$results = curl_exec($ch);
$results = xmlrpc_decode($results);
echo '<pre>'.print_r($results, true).'</pre>';