目錄
包括圖書館
讀取映像(Jpeg 檔案)
创建 XML-RPC 客户端
将数据放置在适当的位置
通过 XML-RPC 发送数据
完整代码
结论
首頁 CMS教程 &#&按 使用XML-RPC和PHP將圖片上傳到WordPress

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

Sep 03, 2023 pm 05:45 PM
php wordpress xml-rpc

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

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

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

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

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

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

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

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

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

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

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

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

WordPress站點文件訪問受限:為什麼我的.txt文件無法通過域名訪問? WordPress站點文件訪問受限:為什麼我的.txt文件無法通過域名訪問? Apr 01, 2025 pm 03:00 PM

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

See all articles