📡 XML-RPC et WordPress

WordPress utilise XML-RPC pour permettre des communications à distance, notamment pour :

  • Publier des articles via des applications tierces (ex: WordPress Mobile, Open Live Writer).
  • Interagir avec WordPress via des API externes.
  • Connecter des services comme Jetpack.

🔹 1. Vérifier si XML-RPC est activé sur WordPress

Depuis WordPress 5.5, XML-RPC est activé mais Jetpack et d’autres services peuvent le désactiver.

✅ Tester XML-RPC manuellement

https://votre-site.com/xmlrpc.php

//Si XML-RPC est activé, vous verrez :

XML-RPC server accepts POST requests only.

// Sinon, vous verrez une erreur 403, ce qui signifie que votre hébergeur ou un plugin (comme Wordfence) l'a désactivé.

🔹 2. Désactiver ou Activer XML-RPC

🛑 Désactiver XML-RPC (Si vous ne l’utilisez pas)

  1. Via functions.php (empêche son accès) :
    add_filter('xmlrpc_enabled', '__return_false');
  2. Via .htaccess (bloque les requêtes XML-RPC) :
    <Files xmlrpc.php> Order Allow,Deny Deny from all </Files>
  3. Via un plugin :
    • Disable XML-RPC
    • TC Security
    • Wordfence Security (dans les paramètres avancés)

🔹 3. Faire une requête XML-RPC vers WordPress

Si XML-RPC est activé, voici comment publier un article via XML-RPC.

📤 Exemple d’envoi d’un article en PHP

<?php
$xmlrpc_url = "https://votre-site.com/xmlrpc.php";
$username = "admin";
$password = "votre-mot-de-passe";

// Création de la requête XML
$request = xmlrpc_encode_request("metaWeblog.newPost", [
    1,                // Blog ID (toujours 1 pour WordPress)
    $username,
    $password,
    [
        "title"   => "Mon article XML-RPC",
        "description" => "Ceci est un test d'article via XML-RPC.",
        "categories"  => ["Tech"],
        "mt_keywords" => "XML-RPC, API, WordPress",
    ],
    true // Publier directement (true) ou brouillon (false)
]);

// Envoi de la requête via cURL
$ch = curl_init($xmlrpc_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: text/xml"]);
$response = curl_exec($ch);
curl_close($ch);

// Afficher la réponse du serveur
echo "Réponse du serveur : " . htmlspecialchars($response);

🔹 4. Sécurité XML-RPC sur WordPress

🔴 Attention : XML-RPC est une cible fréquente des hackers (attaques par force brute, DDoS).

  • Si vous ne l’utilisez pas, désactivez-le !
  • Si vous en avez besoin, restreignez l’accès :
    • Bloquez les requêtes non authentifiées avec un pare-feu (ex: Wordfence).
    • Utilisez un fichier .htaccess pour autoriser uniquement certaines IP :
<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
  Allow from 203.0.113.5
</Files>

✅ Conclusion

  • XML-RPC permet d’interagir avec WordPress à distance.
  • Depuis WordPress 5.5, REST API est privilégiée à XML-RPC.
  • Si vous utilisez XML-RPC, sécurisez-le pour éviter les attaques.

Besoin d’aide sur un point précis ? contactez nous 😊🚀