使用XML-RPC和PHP將圖片上傳到WordPress

WBOY
發布: 2023-09-03 17:45:24
原創
717 人瀏覽過

使用XML-RPC和PHP將圖片上傳到WordPress

#假設您熟悉 XML-RPC 協定及其工作原理,甚至在 WordPress 中也是如此,並且您以前使用過它。新增貼文、刪除頁面等。對於文字來說一切都很好,但是當您想將圖片等文件發送到 WordPress 時會發生什麼?

在本教學中,我們將介紹一種將圖片傳送到 WordPress 的非常簡單的方法,以便它顯示在管理面板的媒體部分中。我們將使用 PHP 發送這張圖片,以便您可以將此程式碼用於 WordPress 外掛程式、主題,甚至只是簡單的 PHP,就像我們的範例一樣。


第 1 步計畫

#為了大致了解我們將要做什麼以及如何做,我將以一個計劃開始本教程。基本上,我們將製作一個 PHP 腳本,將檔案(更準確地說是 jpeg 圖片)上傳到本機 WordPress 安裝。

我們將使用一個 PHP 函式庫來在 PHP 中建立 XML-RPC 用戶端,我們將使用它來連接到 WordPress XML-RPC 伺服器並發送資料。這客戶端是一個名為「The Incutio XML-RPC Library for PHP」的 PHP 函式庫,可以在 script.incutio.com 上找到

請注意:此範例僅用於本教學的示範目的,是一個非常基本且直接的範例


第2步準備環境

對於本教學課程,您首先需要的是 Apache 伺服器上安裝了 PHP 和 MySQL 的 WordPress 工作版本。您也可以在本地使用它,這是我推薦的,實際上也是我們將在本教程中使用的範例。

您需要的另一件事是我們在本教學中使用的 XML-RPC 函式庫。該庫是免費的,具有 BSD 許可證,可以在 scripts.incutio.com 上找到

該函式庫其實只是一個名為 IXR_Library.php 的 PHP 文件,我們將在本教學中使用它。您需要做的下一件事是在本機伺服器安裝的htdocs(或Web 根)資料夾中建立目錄,您將複製IXR_Library.php 檔案並還在其旁邊創建一個index.php 檔案。 index.php 檔案現在需要為空。

在WordPress安裝中我們需要做的最重要的事情是啟動XML-RPC服務。 WordPress 預設會停用此功能,因此我們需要進入管理面板中的設定並啟動它。為此,請轉到設定 -> 寫作,然後在遠端發布標題下,您會發現XML-RPC 旁邊有一個複選框預設情況下取消選擇它。選擇它並點擊“儲存變更”。

現在,我們可以與 WordPress 內建的 XML-RPC 伺服器進行通訊。


第 3 步程式碼解釋

#有趣的部分來了,讓我們開始吧!使用您最喜歡的程式碼編輯器打開前面提到的 index.php 檔案。

包括圖書館

我們需要做的第一件事是包含我們剛剛下載的庫文件,以便我們以後可以使用它。因此,我們編輯 index.php 檔案並添加以下程式碼(不要忘記以 PHP 標記開頭,如範例中所示):

<?php
include_once('IXR_Library.php');
?>
登入後複製

這基本上涵蓋了我們的腳本工作所需的所有內容。簡而言之,我們將使用剛剛包含的庫的客戶端部分。我們稍後會執行此操作。

讀取映像(Jpeg 檔案)

因為我們需要將圖片(jpg 檔案)傳送到 WordPress,所以我們需要以某種方式發送它。解決方案是以位元格式發送它,就像您稍後將看到的那樣,XML-RPC 伺服器功能請求它。但是要像這樣發送它,我們需要將其內容轉換​​為位,並且為此我們需要獲取其內容。該檔案(任何jpg 圖片文件,我們將其命名為test.jpg)將放置在index.php 檔案旁邊(在同一目錄中),在下一部分中,我們將讀取其內容並將其儲存在變數中以供以後使用。

$myFile = "test.jpg";
$fh = fopen($myFile, 'r');
$fs = filesize($myFile); 
$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 服务器。为此,我们需要以下 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 属性赋予覆盖同名现有文件的选项。

通过 XML-RPC 发送数据

要使该脚本正常工作,我们需要做的最后一件事是通过激活来自 $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 发出请求。

以上是使用XML-RPC和PHP將圖片上傳到WordPress的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!