Il est supposé que vous connaissez le protocole XML-RPC et son fonctionnement, même sous WordPress, et que vous l'avez déjà utilisé. Ajouter des publications, supprimer des pages, etc. C’est bien beau pour le texte, mais que se passe-t-il lorsque vous souhaitez envoyer des fichiers comme des images vers WordPress ?
Dans ce tutoriel, nous aborderons un moyen très simple d'envoyer une image à WordPress afin qu'elle s'affiche dans la section média de votre panneau d'administration. Nous enverrons cette image en utilisant PHP afin que vous puissiez utiliser ce code avec un plugin WordPress, un thème ou même simplement du PHP comme dans notre exemple.
Pour avoir une idée générale de ce que nous allons faire et comment le faire, je vais commencer ce tutoriel par un plan. En gros, nous allons créer un script PHP qui téléchargera un fichier (une image jpeg pour être plus précis) sur une installation WordPress locale.
Nous utiliserons une bibliothèque PHP pour créer un client XML-RPC en PHP, que nous utiliserons pour nous connecter au serveur WordPress XML-RPC et envoyer des données. Le client est une bibliothèque PHP appelée "The Incutio XML-RPC Library for PHP" qui peut être trouvée sur script.incutio.com
Veuillez noter : Cet exemple est uniquement à des fins de démonstration pour ce tutoriel et est un exemple très basique et simple.
Pour ce tutoriel, la première chose dont vous avez besoin est une version fonctionnelle de WordPress avec PHP et MySQL installés sur votre serveur Apache. Vous pouvez également l'utiliser localement, ce que je recommande et c'est en fait l'exemple que nous utiliserons dans ce didacticiel.
Une autre chose dont vous avez besoin est la bibliothèque XML-RPC que nous utilisons dans ce tutoriel. La bibliothèque est gratuite avec une licence BSD et peut être trouvée sur scripts.incutio.com
La bibliothèque n'est en fait qu'un fichier PHP appelé IXR_Library.php que nous utiliserons dans ce tutoriel. La prochaine chose que vous devez faire est de créer un répertoire dans le dossier htdocs (ou racine Web) de l'installation de votre serveur local où vous copierez le fichier IXR_Library.php et créerez également un index php à côté de celui-ci. déposer. Le fichier index.php doit maintenant être vide.
La chose la plus importante que nous devons faire lors de l'installation de WordPress est d'activer le service XML-RPC. WordPress désactive cette fonctionnalité par défaut, nous devons donc accéder aux paramètres du panneau d'administration et l'activer. Pour ce faire, allez dans Paramètres -> Écriture et sous la rubrique Publication à distance, vous trouverez une case à cocher à côté de XML-RPC, désélectionnée par défaut. Sélectionnez-le et cliquez sur Enregistrer les modifications.
Nous pouvons désormais communiquer avec le serveur XML-RPC intégré à WordPress.
La partie amusante est là, commençons ! Ouvrez le fichier index.php mentionné précédemment à l'aide de votre éditeur de code préféré.
La première chose que nous devons faire est d'inclure le fichier de bibliothèque que nous venons de télécharger afin de pouvoir l'utiliser plus tard. On édite donc le fichier index.php et on ajoute le code suivant (n'oubliez pas de commencer par la balise PHP, comme indiqué dans l'exemple) :
<?php include_once('IXR_Library.php'); ?>
Cela couvre essentiellement tout ce dont nous avons besoin pour que notre script fonctionne. Bref, nous utiliserons la partie client de la bibliothèque que nous venons d'inclure. Nous le ferons plus tard.
Parce que nous devons envoyer une image (fichier jpg) à WordPress, nous devons l'envoyer d'une manière ou d'une autre. La solution est de l'envoyer au format bit, comme vous le verrez plus tard, la fonction serveur XML-RPC le demande. Mais pour l'envoyer ainsi, nous devons convertir son contenu en bits et pour cela, nous devons récupérer son contenu. Ce fichier (n'importe quel fichier image jpg, nous le nommerons test.jpg) sera placé à côté du fichier index.php (dans le même répertoire) et dans la partie suivante nous lirons son contenu et le stockerons dans une variable pour une utilisation ultérieure.
$myFile = "test.jpg"; $fh = fopen($myFile, 'r'); $fs = filesize($myFile); $theData = fread($fh, $fs); fclose($fh);
Le code ci-dessus crée tout d'abord une nouvelle variable appelée $myfile
qui contient la valeur de chaîne du nom de fichier, et comme elle se trouve dans le même dossier, il n'est pas nécessaire de bloquer d'autres informations de chemin, juste le nom , dans ce cas test.php.
Ensuite, nous devons ouvrir le fichier, nous utilisons donc une fonction PHP fopen
来完成此操作,我们将其与上一个变量的第一个参数 $myFile
和第二个参数另一个字符串一起使用,该字符串表示我们要执行的操作将在文件上进行操作。 r
的字符串值表示正在读取。我们将打开文件的结果添加到变量 $fh
.
然后,因为我们需要文件内容长度,所以我们将使用 PHP 函数 $filesize
返回的值创建变量 $fs
,该函数使用参数 $myFile
最后,我们进入读取部分,我们将执行读取操作的函数返回的值赋予变量 $theData
,即 fread
。该函数使用两个参数,第一个是之前打开的文件变量($fh
),第二个是之前设置的文件大小($fs
)。
最后,我们使用函数 fclose
及其参数 $fh
关闭打开的文件。此时,我们已经有了 jpg 文件的内容,我们将把它发送到 WordPress 的 XML-RPC 服务器。
在下一部分中,我们将使用刚刚导入的库连接到 WordPress 的安装 XML-RPC 服务器。为此,我们需要以下 3 个变量:
$usr
(管理面板用户名),$pwd
(管理面板密码)和$xmlrpc
(XML-RPC 服务器路径)。请注意,XML-RPC 服务器路径由基本 WordPress 安装 URL + 斜杠后面的 xmlprc.php 文件组成。$usr = 'admin'; $pwd = 'admin'; $xmlrpc = 'http://localhost/wordpress/xmlrpc.php'; $client = new IXR_Client($xmlrpc);
接下来我们需要创建对服务器的调用。为此,我们将使用刚刚创建的 URL 字符串和从导入的库文件继承的 IXR_Client
类。此时,变量 $client 被声明为该链接的新客户端,并且所有操作都将使用它来完成。
下一部分是可选的,但如果您愿意,您可以像这样激活调试:
$client->debug = true;
如果您激活它,您将可以更清楚地了解出现问题时发生的情况。
在发送数据之前,我们必须正确组织和格式化数据,并且由于我们需要发送数据的方式,我们必须创建一个包含所有值的数组。我们将此数组命名为 $params 并为其指定以下值:
$params = array('name' => 'test.jpg', 'type' => 'image/jpg', 'bits' => new IXR_Base64($theData), 'overwrite' => false);
首先,我们需要为 name 的数组索引名称指定 'test.jpg 的值,因为这将是文件的名称。之后我们有索引名称 type
,我们给出 image/jpg 的值。这是我们正在上传的文件类型。然后我们就有了名为 bits 的索引,它实际上是我们需要发送的文件。现在,WordPress XML-RPC API 要求以 64 位为基础发送该值。为了正确执行此操作,我们将使用变量 $theData
,但我们需要通过类 IXR_Base64
运行它,以便将其相应地编码为 base64
位。为了将文件按请求成功发送到服务器,base64 编码的格式正确非常重要。 Base64 编码有多种,如果使用了不正确的编码,将不可避免地出现错误。上面示例中使用的 IXR_Base64
类按照服务器的要求转换文件的内容。最后,将索引类型 overwrite
设置为 false,将 false 属性赋予覆盖同名现有文件的选项。
要使该脚本正常工作,我们需要做的最后一件事是通过激活来自 $client
变量的请求将数据发送到 WordPress,如下所示:
$res = $client->query('wp.uploadFile',1, $usr, $pwd, $params);
$res
变量给出从 $client
变量内部调用的 query
函数的结果,该变量表示最初声明和启动的 XML-RPC 客户端实现。基本上我们正在向服务器发送请求。服务器将收到带有以下参数的请求:
wp.uploadFile
- 我们调用并用于上传文件所需的服务函数1
- 博客ID(每个WordPress博客都有一个ID,默认为1$usr
- 先前声明的用户名变量。$pwd
- 先前声明的密码变量。$params
- 我们刚才讨论的参数数组。以上所有代码放在一起看起来像这样:
实现这样的客户端并不难,但是因为有时你要构建的代码是特定的,所以你需要知道你在做什么,这样才能达到预期的效果。 PHP 中针对 WordPress XML-RPC 上传文件服务器请求的 XML-RPC 客户端实现就是这样一个示例。如果您发送的数据格式不正确,则可能不会被接受。这个例子虽然只有几行代码,但是非常具体。相同的客户端可用于制作任何其他类型的
使用带有适当参数的不同 XML-RPC 请求函数向 WordPress 发出请求。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!