Section courante

A propos

Section administrative du site

 Langage  Installation  Elément PHP  Elément WordPress  Programmation PHP  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Installation de WordPress avec la distribution TurnKey Linux
Remarques
Opérateur
Conditionnel
Boucle
Définition de fonction
Référence de fonctions
Référence des classes
Référence de fonctions et méthodes
Référence de la base de données
Référence des plugiciels
Référence des balises (Shortcodes WordPress)
Référence des balises WordPress Export (WXR)
Référence des fichiers
XML-RPC
Bonjour
Astronomie
Base de données
Biochimie
Conversion
Electricité
Finance
Géographie
Géométrie
Gouvernement
Histoire
Mathématique
Médicale
Météorologie
Océanographie
Sport
Temps
Tri
Trigonométrie
Validation
Phase lunaire
Recherche/Formulaire
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
HTML à texte
Source Pascal en syntaxe coloré
Bin,Hex,Base62,...
Calcul du tarif d'une piscine pour 1 mois
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Distance en Km entre deux IP
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Taxe de vente canadienne
Chiffre romain
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Année bissextile
Date de la Pâque
Jour férié
FirstDayOfMonth
Tri à bulle (Bubble Sort)
Tri Shell Sort
ArcCos
ArcSin
Atn/ATan/ArcTan
Cos
Sin
Courriel
Téléchargement
Code d'erreur
Déboguage
Termes et du vocabulaire
PHP
Bibliographie
Déboguage du processus de redirection
Application en PHP
ASP versus PHP
ColdFusion versus PHP
Préface
Notes légal
Dictionnaire
Recherche

XML-RPC

Le XML-RPC est un service Web qu'offre le projet WordPress afin de communiquer directement aux contenus depuis une application externe. Normalement, il utilise le port standard 80 et est situé à la racine du site sous l'appel «xmlrpc.php». Ainsi, par exemple le nom du domaine «localhost», on pourrait y accéder à partir du lien «http://localhost/xmlrpc.php».

Programmation

On peut communiquer facilement en effectuant un appel CURL et en utilisant la méthode «POST» pour envoyer un XML de paramètres. Voici un exemple de son utilisation en PHP :

  1. <?php
  2. function callXMLRPC($URL,$MethodName,$param = array()) {
  3.     $curl = curl_init();
  4.     curl_setopt($curl, CURLOPT_POST, 1 );
  5.     curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
  6.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  7.     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  8.     curl_setopt($curl, CURLOPT_URL, $URL);
  9.     curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
  10.     curl_setopt($curl, CURLOPT_TIMEOUT, 20);
  11.     curl_setopt($curl, CURLOPT_POSTFIELDS, '<?xml version="1.0" encoding="iso-8859-1"?>' .
  12.                             '<methodCall>' .
  13.                             '<methodName>'.$MethodName.'</methodName>' .
  14.                             '<params>' .
  15.                                 (count($param)>1?'<param><value>'.implode('</value></param><param><value>',$param).'</value></param>':(count($param)==1?'<param><value>'.$param[0].'</value></param>':'')).
  16.                             '</params>' .
  17.                             '</methodCall>' );
  18.     $contents = curl_exec($curl);
  19.     $Result = curl_getinfo($curl,CURLINFO_HTTP_CODE);
  20.     curl_close($curl);
  21.     if(($contents) && ($Result == 200)) return $contents;
  22.     else return false;
  23. }
  24.  
  25. // Demande la liste des auteurs :
  26. echo callXMLRPC("http://localhost/xmlrpc.php", 'wp.getAuthors', array(1,'utilisateur','motdepasse'));
  27. // Demande l'article avec l'identificateur de postage d'article 2 :
  28. echo callXMLRPC("http://localhost/xmlrpc.php",'blogger.getPost',array(1,2,'utilisateur','motdepasse'));
  29. ?>

on obtiendra un résultat comme ceci :

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
      <array><data>
    <value><struct>
  <member><name>user_id</name><value><string>9</string></value></member>
  <member><name>user_login</name><value><string>smaltais</string></value></member>
  <member><name>display_name</name><value><string>Sylvain Maltais</string></value></member>
</struct></value>
</data></array>
      </value>
    </param>
  </params>
</methodResponse>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
      <struct>
  <member><name>userid</name><value><string>1</string></value></member>
  <member><name>dateCreated</name><value><dateTime.iso8601>20150525T12:02:38</dateTime.iso8601></value></member>
  <member><name>content</name><value><string>Ceci un exemple de contenu d'article</string></value></member>
  <member><name>postid</name><value><string>2</string></value></member>
</struct>
      </value>
    </param>
  </params>
</methodResponse>

Il existe également des solutions pour les autres langages de programmation comme par exemple en Ruby le projet WordPress XML-RPC client for Ruby, en C# (C Sharp) le projet WordPressSharp,...

Liste des méthodes

La liste des méthodes et la liste de méthodes disponibles pour appeler le service Web. Elle est transmet dans le même XML qu'avec les paramètres sous l'appellation «methodName». Voici la liste des méthodes fournit de base :

Nom Version Description
wp.deleteCategory 2.5 à 3.4 Cette méthode de service Web permet de supprimer une catégorie existante.
wp.deleteComment 2.7+ Cette méthode de service Web permet de supprimer commentaire existant.
wp.deletePage 2.2+ Cette méthode de service Web permet de supprimer une page existante.
wp.deletePost 3.4+ Cette méthode de service Web permet de supprimer un postage d'article existant de n'importe quel type de postage enregistré.
wp.deleteTerm 3.4+ Cette méthode de service Web permet de supprimer un terme de taxonomie existant.
wp.editComment 2.7+ Cette méthode de service Web permet de modifier un commentaire existant.
wp.editPage 2.2+ Cette méthode de service Web permet de modifier une page existant.
wp.editPost 3.4+ Cette méthode de service Web permet de modifier un postage d'article existant par n'importe quel type de postage enregistré.
wp.editProfile 3.5+ Cette méthode de service Web permet de modifier le profile de l'utilisateur.
wp.editTerm 3.4+ Cette méthode de service Web permet de modifier un terme de taxonomie existant.
wp.getAuthors 3.4+ Cette méthode de service Web permet de demander la liste de tous les utilisateurs.
wp.getCategories 2.2 à 3.4 Cette méthode de service Web permet de demander la liste de tous les catégories.
wp.getCommentCount 2.7+ Cette méthode de service Web permet de demander le nombre de commentaires pour un postage d'article spécifié.
wp.getComment 2.7+ Cette méthode de service Web permet de demander un commentaire.
wp.getComments 2.7+ Cette méthode de service Web permet de demander la liste des commentaires.
wp.getCommentStatusList 2.7+ Cette méthode de service Web permet de demander la liste des états de commentaire.
wp.getMediaItem 3.1+ Cette méthode de service Web permet de demander un item média en attachement.
wp.getMediaLibrary 3.1+ Cette méthode de service Web permet de demander la liste des items média en attachement.
wp.getOptions 2.6+ Cette méthode de service Web permet de demander les options d'un blog.
wp.getPage 2.2+ Cette méthode de service Web permet de demander une page.
wp.getPageList 2.2+ Cette méthode de service Web permet de demander la liste des pages avec un minimum de détails.
wp.getPages 2.2+ Cette méthode de service Web permet de demander la liste des pages avec tous les détails.
wp.getPageStatusList 2.2+ Cette méthode de service Web permet de demander la liste des valeurs d'états supportés par les pages.
wp.getPageTemplates 2.6+ Cette méthode de service Web permet de demander les gabarits de page pour le thème actif.
wp.getPost 3.4+ Cette méthode de service Web permet de demander une postage d'article de n'importe quel type.
wp.getPostFormats 3.4+ Cette méthode de service Web permet de demander la liste de formats de postage d'article.
wp.getPosts 3.4+ Cette méthode de service Web permet de demander une liste de postage de n'importe quel type de postage d'article enregistré.
wp.getPostStatusList 3.4+ Cette méthode de service Web permet de demander la liste des valeurs d'états de postage d'article supportés.
wp.getPostType 3.4+ Cette méthode de service Web permet de demander le type de postage d'article enregistré.
wp.getPostTypes 3.4+ Cette méthode de service Web permet de demander la liste des types de postage enregistré.
wp.getProfile 3.5+ Cette méthode de service Web permet de demander le profile de l'utilisateur.
wp.getTags 2.7 à 3.4 Cette méthode de service Web permet de demander la liste de toutes les balises.
wp.getTaxonomy 3.4+ Cette méthode de service Web permet de demander les informations à propos de la taxonomie.
wp.getTaxonomies 3.4+ Cette méthode de service Web permet de demander la liste des taxonomies.
wp.getTerm 3.4+ Cette méthode de service Web permet de demander un terme de taxonomie.
wp.getTerms 3.4+ Cette méthode de service Web permet de demander la liste des termes de taxonomie.
wp.getUser 3.5+ Cette méthode de service Web permet de demander un utilisateur.
wp.getUsers 3.5+ Cette méthode de service Web permet de demander la liste des utilisateurs.
wp.getUsersBlogs 3.5+ Cette méthode de service Web permet de demander la liste des blogs d'un utilisateur.
wp.newCategory 2.2 à 3.4 Cette méthode de service Web permet de créer une nouvelle catégorie.
wp.newComment 2.7+ Cette méthode de service Web permet de créer un nouveau commentaire.
wp.newPage 2.2+ Cette méthode de service Web permet de créer une nouvelle page.
wp.newPost 3.4+ Cette méthode de service Web permet de créer un postage d'article de n'importe quel type enregistré.
wp.newTerm 3.4+ Cette méthode de service Web permet de créer un terme de taxonomie.
wp.setOptions 2.6+ Cette méthode de service Web permet de fixer les options d'un blog.
wp.suggestCategories 2.2 à 3.4 Cette méthode de service Web permet de demander la liste des catégories débutant à la chaine de caractères spécifié.
wp.uploadFile 3.1+ Cette méthode de service Web permet de téléverser un fichier média.

Légende

    Cette couleur permet d'indiquer la méthode de service Web est obsolète.

Désactivation ou protection contre une méthode XML-RPC

Étant donné que le service Web XML-RPC, fournit avec WordPress, donne accès à l'ajouter, la modifier et la suppression d'article et de catégorie, il peut s'agir d'une porte grande ouverte pour les attaques et les tentatives de créer le projet de l'externe. Ainsi, si vous ne l'utilisez pas, il est donc grandement recommandé de désactiver ce service Web. Pour pouvoir désactiver ou interdire l'utilisation du XML-RPC par WordPress, vous devez ajouter les lignes suivantes à la fin du fichier «.htaccess» pour Apache 2.2 :

<Files xmlrpc.php>
order deny,allow
deny from all
allow from none
</Files>

pour les serveurs Apache 2.4 ou supérieur :

<Files xmlrpc.php>
Require all denied
</Files>

pour tous les Apache

Redirect 403 /xmlrpc.php

L'exemple suivant permet d'interdire les appels externes au site Web sur l'API XML-RPC de WordPress :

RewriteCond %{HTTP_HOST} !localhost
RewriteRule /xmlrpc.php - [R=403,NC,L]

pour les serveurs web NGinx

location = /xmlrpc.php {
deny all;
}

Remarque

Voir également

Références des protocoles réseaux - XML-RPC - Introduction

PARTAGER CETTE PAGE SUR
Dernière mise à jour : jeudi, le 9 mars 2017