如何检查 WordPress 中是不是启用了 XML-RPC
Posted
技术标签:
【中文标题】如何检查 WordPress 中是不是启用了 XML-RPC【英文标题】:How to check is XML-RPC enabled in WordPress如何检查 WordPress 中是否启用了 XML-RPC 【发布时间】:2013-03-08 05:39:05 【问题描述】:是否可以检查(通过 php)在 WordPress 中是否启用了 XML-RPC? 比如,写一个函数来测试这个。
if(is_xmlrpc_enabled())
//action
else
//another action
【问题讨论】:
【参考方案1】:WordPress 在其 XML-RPC 服务器中有两种测试方法:
demo.sayHello – Returns a standard “Hello!” message.
demo.addTwoNumbers – Accepts an array containing two numbers and returns the sum.
function sayHello()
$params = array();
return $this->send_request('demo.sayHello',$params);
$objXMLRPClientWordPress = new XMLRPClientWordPress("http://localhost/wordpress31/xmlrpc.php" , "username" , "passowrd");
function send_request($requestname, $params)
$request = xmlrpc_encode_request($requestname, $params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, $this->XMLRPCURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$results = curl_exec($ch);
curl_close($ch);
return $results;
如果您得到相同的结果,则意味着您能够正确地将请求发送到您的 WordPress XML-RPC 服务器并正确接收请求。
【讨论】:
【参考方案2】:默认情况下,对于 WP 版本 > 3.5 启用 XML-RPC(带有允许禁用它的 'xmlrpc_enabled' 挂钩) 对于旧版本,数据库中有一个字段(选项表),它指示它是否启用。(此选项在 wp > 3.5 时被删除)
function is_xmlrpc_enabled()
$returnBool = false;
$enabled = get_option('enable_xmlrpc'); //for ver<3.5
if($enabled)
$returnBool = true;
else
global $wp_version;
if (version_compare($wp_version, '3.5', '>='))
$returnBool = true; //its on by default for versions above 3.5
else
$returnBool = false;
return $returnBool;
【讨论】:
可以正常工作,但是某些托管公司出于安全原因默认不允许 XML-RPC 连接,然后您的脚本将无法工作。 问题指出“在 wordpress 中启用了 xmlrpc”,它就是这样。表示我对软件级别检查感兴趣。如果您有某种在网络级别完成的协议过滤 - xmlrpc 在 wordpress 级别上启用了 STIL,但由于网络限制,它无法正常工作。在那种特定情况下,您将需要使用不同的方法实施方法(或咨询托管公司,因为这种限制很奇怪)。所以上面的方法在任何情况下都可以工作,为了写的目的(以及我使用它的时间)以上是关于如何检查 WordPress 中是不是启用了 XML-RPC的主要内容,如果未能解决你的问题,请参考以下文章