1

XMLRPCでワードプレスの投稿を削除しようとしています。関数を作成しましたが、奇妙なものが返されます。

function deletePost($rpcurl,$username,$password,$post_id) 
{
// xmlrpc settings
$params = array(0,$username,$password,$post_id);

// run xmlrpc
$request = xmlrpc_encode_request('wp.deletePost', $params);
$ch = curl_init();  
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);  
curl_setopt($ch, CURLOPT_URL, $rpcurl);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_TIMEOUT, 1);  
$results = curl_exec($ch);  
curl_close($ch);

// testing
var_dump( $results);
return $results;  
}

返されるものは次のとおりです(xmlタグの一部を削除した後):

<name>faultCode</name>
<value><int>-32601</int></value>
<name>faultString</name>
<value><string>server error. requested method wp.deletePost does not exist.</string>
4

1 に答える 1

1

それは実際にはそれが言うことです... xmlrpcサーバーにはそのようなメソッドはありません.wpはそれ自体で投稿を削除することを許可していないためです...しかし、xmlrpcにはblogger.deletePostと呼ばれるブロガーAPIのメソッドがあります。それはあなたが望むことをするべきです。あなたのコードを見ると、修正する必要があるのは 2 つのことだけだと思います。コードの 3 行目を次のように変更します。

$request = xmlrpc_encode_request('blogger.deletePost', $params);

また、$paramsは [1] の値が post_id、[2] ユーザー名が [3] パスワードの配列である必要があります。

編集: バージョン 3.4 から明らかに存在するため、上記のソリューションを使用するか、[1] ユーザー名、[2] パスワード、および [3] post_id の値を持つ$paramsでwp.deletePostを使用できます。

于 2012-11-17T06:46:42.923 に答える