【问题标题】: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
}

【问题讨论】:

    标签: php wordpress xml-rpc


    【解决方案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,但由于网络限制,它无法正常工作。在那种特定情况下,您将需要使用不同的方法实施方法(或咨询托管公司,因为这种限制很奇怪)。所以上面的方法在任何情况下都可以工作,为了写的目的(以及我使用它的时间)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多