Cómo verificar si XML-RPC está habilitado en WordPress

2 minutos de lectura

avatar de usuario
Frío

¿Es posible verificar (a través de php) si XML-RPC está habilitado en WordPress? Algo así como escribir una función que probará esto.

if(is_xmlrpc_enabled()) {
   //action
}
else {
   //another action
}

avatar de usuario
Frío

XML-RPC está habilitado por defecto para versiones de WP > 3.5 (con el enlace ‘xmlrpc_enabled’ que permite deshabilitarlo) Para versiones anteriores, hay un campo en la base de datos (tabla de opciones), que indica si está habilitado o no.( Esta opción se elimina para 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;
}

  • Puede funcionar bien, pero algunas empresas de alojamiento no permiten la conexión XML-RPC de forma predeterminada por razones de seguridad, y entonces su secuencia de comandos no funcionará.

    – Benoti

    16 de marzo de 2019 a las 10:20

  • La pregunta dice “está habilitado xmlrpc en wordpress” y es como es. Significa que estoy interesado en la verificación del nivel de software. Si tiene algún tipo de filtrado de protocolo que se realiza en el nivel de la red, xmlrpc está habilitado para STIL en el nivel de wordpress, pero no funcionará debido a la restricción de la red. En ese caso específico, deberá implementar un método con un enfoque diferente (o consultar con la empresa de alojamiento, porque ese tipo de restricción es extraño). Entonces, el método anterior funcionará en cualquier caso, para el propósito escrito (y para el momento en que lo usé)

    – Frío

    17 de marzo de 2019 a las 14:02

avatar de usuario
Subodh Ghulaxe

WordPress tiene dos métodos de prueba en su servidor 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;  
}  

Si obtiene el mismo resultado, significa que puede enviar la solicitud correctamente a su servidor XML-RPC de WordPress y recibir la solicitud correctamente.

¿Ha sido útil esta solución?