使用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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

Wordpress站點文件訪問受限:排查.txt文件無法訪問的原因最近有用戶在配置小程序業務域名時,遇到一個問題:�...
