假设您熟悉XML-RPC协议及其工作原理,即使是在WordPress中,并且您以前使用过它。添加帖子、删除页面等。对于文本来说一切都很好,但是当你想将图片等文件发送到WordPress时会发生什么呢?
在本教程中,我们将介绍一种非常简单的方法来发送图片到WordPress,以便它可以显示在管理面板的媒体部分。我们将使用PHP发送这张图片,以便您可以将这些代码用于WordPress插件、主题甚至简单的PHP,就像我们的示例中一样。
步骤1计划为了对我们将要做的事情和如何做有一个大致的了解,我将以一个计划开始本教程。基本上,我们将创建一个PHP脚本来上传文件(更准确地说是jpeg图像)到本地WordPress安装。
我们将使用PHP库在PHP中创建一个XML-RPC客户端,我们将使用它连接到WordPress XML-RPC服务器并发送数据。客户端是一个名为“PHP的InclusionXML-RPC库”的PHP库,可以在script.incutio.com上找到。
步骤2准备环境对于本教程,首先需要在Apache服务器上安装PHP和MySQL的WordPress工作版本。您也可以在本地使用它,这是我推荐的,实际上是我们将在本教程中使用的一个示例。
您需要的另一件事是我们在本教程中使用的XML-RPC库。该库是免费的,拥有BSD许可证,可以在scripts.incutio.com上找到。
该库实际上只是一个名为IXR库的PHP文件,我们将在本教程中使用。接下来您需要做的是在本地服务器上安装的htdocs(或Web根目录)文件夹中创建一个目录,您将在其中复制IXR _库。php文件,并在其旁边创建一个index.php文件。Index.php文件现在需要清空。
在WordPress安装过程中,我们需要做的最重要的事情是激活XML-RPC服务。WordPress默认禁用这个功能,所以我们需要在管理面板的设置中激活它。为此,请转到设置-》编写,然后在远程发布的标题下,您会发现XML-RPC旁边的复选框,默认情况下是取消选中的。选择它并单击保存更改。
现在,我们可以与WordPress中内置的XML-RPC服务器进行通信。
步骤3代码解释有趣的部分在这里,让我们开始吧!使用您最喜欢的代码编辑器打开前面提到的index.php文件。
包含库我们需要做的第一件事是包含我们刚刚下载的库文件,以便我们将来可以使用它。因此,我们编辑index.php文件并添加以下代码(不要忘记从PHP标签开始,如示例所示):
& lt?phpinclude _ once(‘IXR _图书馆。PHP‘);?& gt这基本上涵盖了我们脚本工作所需的一切。简而言之,我们将使用刚刚包含的库的客户端部分。我们稍后再做。
读取图像(Jpeg文件)因为我们需要将图像(jpg文件)发送到WordPress,所以我们需要以某种方式发送它们。解决方案是以位格式发送它,您将在后面看到,XML-RPC服务器函数请求它。但是要像这样发送它,我们需要将其内容转换为位,为此,我们需要获取其内容。这个文件(任何jpg图像文件,我们将把它命名为test.jpg)将被放在index.php文件旁边(在同一目录中),在下一节中,我们将读取其内容并将其存储在一个变量中以备后用。
$ myFile = & quottest.jpg & quot;$ FH = fopen($ my file,‘r‘);$ fs = filesize($ my file);$ theData = fread($ FH,$ fs);fclose(FH美元);上面代码的功能是,首先,它创建一个名为$myfile的新变量,该变量包含文件名的字符串值。因为它位于同一个文件夹中,所以不需要为它插入任何其他路径信息,只需输入名称即可,在本例中为test.php。
接下来,我们需要打开文件,因此我们使用PHP函数fopen来完成此操作。我们将它与前一个变量的第一个参数$myFile和第二个参数的另一个字符串一起使用,这表明我们要执行的操作将在文件上执行。字符串值r表示正在读取。我们将打开文件的结果添加到变量$fh中。
然后,因为我们需要文件内容的长度,所以我们将使用PHP函数$filesize返回的值来创建变量$fs,该变量使用参数$myFile。
最后,我们进入读取部分,我们将执行读取操作的函数返回的值赋给变量$theData,即fread。这个函数有两个参数,第一个是之前打开的文件变量($fh),第二个是之前设置的文件大小($fs)。
最后,我们使用函数fclose及其参数$fh来关闭打开的文件。此时,我们已经有了jpg文件的内容,我们将把它发送到WordPress的XML-RPC服务器。
创建XML-RPC客户端在下一节中,我们将使用我们刚刚导入的库来连接到WordPress的安装XML-RPC服务器。为此,我们需要以下三个变量:
$usr(管理面板用户名)、$pwd(管理面板密码)和$ xmlrpc(XML-RPC服务器路径)。注意XML-RPC服务器路径由基本WordPress安装URL后面的xmlprc.php文件+斜杠组成。$ usr =‘admin‘;$ pwd =‘admin‘;$ xmlrpc =‘http://localhost/& lt;a style =‘color:# f60;文本装饰:下划线;href = & quothttps://m.php.cn/zt/15989.html”目标= & quot_blank"& gtwordpress & lt/a & gt;/xmlrpc . PHP‘;$client =新IXR客户端($ xmlrpc);接下来我们需要创建一个对服务器的调用。为此,我们将使用刚刚创建的URL字符串和从导入的库文件继承的IXR客户端类。此时,变量$client被声明为链接的新客户端,所有操作都将使用它来完成。
下一部分是可选的,但是如果您愿意,可以像这样激活调试:
$ client-& gt;debug = true如果您激活它,您将更好地了解出现问题时会发生什么。
将数据放在正确的位置在发送数据之前,我们必须正确地组织和格式化数据,并且由于我们需要发送数据的方式,我们必须创建一个包含所有值的数组。我们将该数组命名为$params,并赋予其以下值:
$ params = array(‘name‘= & gt;test.jpg,‘type‘= & gt;image/jpg,‘bits‘= & gt;新IXR Base64($ theData),‘overwrite‘= & gt;假的);首先,我们需要为name的数组索引名称指定一个值“test.jpg”,因为这将是文件的名称。然后我们有了索引名称类型,并给出了image/jpg的值。这是我们正在上传的文件类型。然后我们有一个名为bits的索引,它实际上是我们需要发送的文件。现在,WordPress XML-RPC API要求在64位的基础上发送这个值。为了正确地做到这一点,我们将使用变量$theData,但我们需要通过类IXR_Base64来运行它,以将其相应地编码为Base64位。为了按照请求成功地将文件发送到服务器,base64编码格式的正确性非常重要。Base64编码有很多种。如果使用不正确的代码,错误将不可避免地发生。上例中使用的IXR Base64类根据服务器的要求转换文件的内容。最后,将索引类型overwrite设置为false,并为false属性提供用相同名称覆盖现有文件的选项。
通过XML-RPC发送数据要使该脚本正常工作,我们需要做的最后一件事是通过激活来自$client变量的请求将数据发送到WordPress,如下所示:
$ RES = $ client-& gt;query(‘WP . uploadfile‘,1,$usr,$pwd,$ params);$res变量给出了从$client变量内部调用的查询函数的结果,该变量表示最初声明和启动的XML-RPC客户端实现。基本上,我们向服务器发送一个请求。服务器将接收带有以下参数的请求:
WP . upload file-我们调用并用于上传文件的服务函数。博客ID(每个WordPress博客都有一个ID,默认是1 $ usr-之前声明的用户名变量。$ pwd-先前声明的密码变量。$ params-我们刚刚讨论过的参数数组。完整代码以上所有代码看起来都像这样:
结论实现这样的客户端并不难,但有时您要构建的代码是特定的,因此您需要知道自己在做什么才能达到预期的结果。WordPress XML-RPC上传文件服务器请求的PHP中的XML-RPC客户端实现就是这样一个例子。如果您发送的数据格式不正确,可能不会被接受。这个例子只有几行代码,但是非常具体。同一客户端可用于制作任何其他类型的。
使用不同的带有适当参数的XML-RPC请求函数向WordPress发出请求。