Rumah > Tutorial CMS > WordTekan > teks badan

Muat naik imej ke WordPress menggunakan XML-RPC dan PHP

WBOY
Lepaskan: 2023-09-03 17:45:24
asal
718 orang telah melayarinya

Muat naik imej ke WordPress menggunakan XML-RPC dan PHP

Diandaikan bahawa anda sudah biasa dengan protokol XML-RPC dan cara ia berfungsi, walaupun dalam WordPress, dan anda pernah menggunakannya sebelum ini. Tambah siaran, padam halaman, dsb. Itu semua baik dan bagus untuk teks, tetapi apa yang berlaku apabila anda ingin menghantar fail seperti imej ke WordPress?

Dalam tutorial ini, kami akan membincangkan cara yang sangat mudah untuk menghantar imej ke WordPress supaya ia dipaparkan di bahagian media panel pentadbir anda. Kami akan menghantar imej ini menggunakan PHP supaya anda boleh menggunakan kod ini dengan pemalam WordPress, tema, atau malah PHP biasa seperti dalam contoh kami.


Langkah 1Rancang

Untuk mendapatkan gambaran umum tentang perkara yang akan kita lakukan dan cara melakukannya, saya akan memulakan tutorial ini dengan rancangan. Pada asasnya, kami akan membuat skrip PHP yang akan memuat naik fail (imej jpeg lebih tepat) ke pemasangan WordPress tempatan.

Kami akan menggunakan perpustakaan PHP untuk mencipta klien XML-RPC dalam PHP, yang akan kami gunakan untuk menyambung ke pelayan XML-RPC WordPress dan menghantar data. Pelanggan ialah perpustakaan PHP yang dipanggil "The Incutio XML-RPC Library untuk PHP" yang boleh didapati di script.incutio.com

Sila ambil perhatian: Contoh ini adalah untuk tujuan demonstrasi sahaja untuk tutorial ini dan merupakan contoh yang sangat asas dan mudah


Langkah 2Sediakan persekitaran

Untuk tutorial ini, perkara pertama yang anda perlukan ialah versi WordPress yang berfungsi dengan PHP dan MySQL dipasang pada pelayan Apache anda. Anda juga boleh menggunakannya secara tempatan, itulah yang saya cadangkan dan sebenarnya adalah contoh yang akan kami gunakan dalam tutorial ini.

Perkara lain yang anda perlukan ialah perpustakaan XML-RPC yang kami gunakan dalam tutorial ini. Perpustakaan ini percuma dengan lesen BSD dan boleh didapati di scripts.incutio.com

Pustaka sebenarnya hanyalah fail PHP yang dipanggil IXR_Library.php yang akan kami gunakan dalam tutorial ini. Perkara seterusnya yang perlu anda lakukan ialah mencipta direktori dalam folder htdocs (atau akar web) pemasangan pelayan tempatan anda di mana anda akan menyalin fail IXR_Library.php dan juga mencipta indeks di sebelahnya fail. Fail index.php perlu kosong sekarang.

Perkara paling penting yang perlu kita lakukan dalam pemasangan WordPress ialah mengaktifkan perkhidmatan XML-RPC. WordPress melumpuhkan ciri ini secara lalai, jadi kita perlu pergi ke tetapan dalam panel pentadbir dan mengaktifkannya. Untuk melakukan ini, pergi ke

Settings -> Writing dan di bawah tajuk Remote Publishing anda akan menemui kotak pilihan di sebelah XML-RPC dengan ia dinyahpilih secara lalai. Pilihnya dan klik Simpan Perubahan.

Kini kami boleh berkomunikasi dengan pelayan XML-RPC terbina dalam WordPress.


Langkah 3Penjelasan kod

Bahagian yang menyeronokkan sudah tiba, mari mulakan! Buka fail

index.php yang dinyatakan sebelum ini menggunakan editor kod kegemaran anda.

Termasuk perpustakaan

Perkara pertama yang perlu kami lakukan ialah memasukkan fail perpustakaan yang baru kami muat turun supaya kami boleh menggunakannya kemudian. Oleh itu, kami mengedit fail

index.php dan menambah kod berikut (jangan lupa mulakan dengan tag PHP, seperti yang ditunjukkan dalam contoh):

<?php
include_once('IXR_Library.php');
?>
Salin selepas log masuk

Ini pada asasnya merangkumi semua yang kami perlukan untuk skrip kami berfungsi. Pendek kata, kami akan menggunakan bahagian pelanggan perpustakaan yang baru kami sertakan. Kami akan lakukan ini kemudian.

Baca imej (fail Jpeg)

Oleh kerana kita perlu menghantar imej (fail jpg) ke WordPress, kita perlu menghantarnya entah bagaimana. Penyelesaiannya adalah untuk menghantarnya dalam format bit, seperti yang anda akan lihat kemudian, fungsi pelayan XML-RPC memintanya. Tetapi untuk menghantarnya seperti ini kita perlu menukar kandungannya kepada bit dan untuk itu kita perlu mendapatkan kandungannya. Fail ini (mana-mana fail imej jpg, kami akan namakannya sebagai test.jpg) akan diletakkan di sebelah fail

index.php (dalam direktori yang sama) dan di bahagian seterusnya kami akan membaca kandungannya dan menyimpannya dalam pembolehubah dalam untuk kegunaan kemudian.

$myFile = "test.jpg";
$fh = fopen($myFile, 'r');
$fs = filesize($myFile); 
$theData = fread($fh, $fs);
fclose($fh);
Salin selepas log masuk

Apa yang dilakukan oleh kod di atas ialah, pertama sekali, ia mencipta pembolehubah baharu yang dipanggil $myfile yang mengandungi nilai rentetan nama fail, jadi tidak perlu terperangkap kerana ia berada dalam folder yang sama Sebarang maklumat laluan lain kepadanya hanyalah nama, dalam kes ini

test.php$myfile 的新变量,其中包含文件名的字符串值,因为它位于同一文件夹中,所以不需要卡住任何其他路径信息对于它,只是名称,在本例中为 test.php

接下来我们需要打开该文件,因此我们使用 PHP 函数 fopen 来完成此操作,我们将其与上一个变量的第一个参数 $myFile 和第二个参数另一个字符串一起使用,该字符串表示我们要执行的操作将在文件上进行操作。 r 的字符串值表示正在读取。我们将打开文件的结果添加到变量 $fh.

🎜Seterusnya kita perlu membuka fail, jadi kita menggunakan fungsi PHP fopen untuk melakukan ini, kita menggabungkannya dengan parameter pertama pembolehubah sebelumnya $myFile dan The dua parameter digunakan bersama dengan rentetan lain yang mewakili operasi yang ingin kami lakukan pada fail. Nilai rentetan r menunjukkan bahawa membaca sedang dijalankan. Kami menambah hasil membuka fail kepada pembolehubah $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);
Salin selepas log masuk

接下来我们需要创建对服务器的调用。为此,我们将使用刚刚创建的 URL 字符串和从导入的库文件继承的 IXR_Client 类。此时,变量 $client 被声明为该链接的新客户端,并且所有操作都将使用它来完成。

下一部分是可选的,但如果您愿意,您可以像这样激活调试:

$client->debug = true;
Salin selepas log masuk

如果您激活它,您将可以更清楚地了解出现问题时发生的情况。

将数据放置在适当的位置

在发送数据之前,我们必须正确组织和格式化数据,并且由于我们需要发送数据的方式,我们必须创建一个包含所有值的数组。我们将此数组命名为 $params 并为其指定以下值:

$params = array('name' => 'test.jpg', 'type' => 'image/jpg', 'bits' => new IXR_Base64($theData), 'overwrite' => false);
Salin selepas log masuk

首先,我们需要为 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);
Salin selepas log masuk

$res 变量给出从 $client 变量内部调用的 query 函数的结果,该变量表示最初声明和启动的 XML-RPC 客户端实现。基本上我们正在向服务器发送请求。服务器将收到带有以下参数的请求:

  • wp.uploadFile - 我们调用并用于上传文件所需的服务函数
  • 1 - 博客ID(每个WordPress博客都有一个ID,默认为1
  • $usr - 先前声明的用户名变量。
  • $pwd - 先前声明的密码变量。
  • $params - 我们刚才讨论的参数数组。

完整代码

以上所有代码放在一起看起来像这样:


Salin selepas log masuk


结论

实现这样的客户端并不难,但是因为有时你要构建的代码是特定的,所以你需要知道你在做什么,这样才能达到预期的效果。 PHP 中针对 WordPress XML-RPC 上传文件服务器请求的 XML-RPC 客户端实现就是这样一个示例。如果您发送的数据格式不正确,则可能不会被接受。这个例子虽然只有几行代码,但是非常具体。相同的客户端可用于制作任何其他类型的

使用带有适当参数的不同 XML-RPC 请求函数向 WordPress 发出请求。

Atas ialah kandungan terperinci Muat naik imej ke WordPress menggunakan XML-RPC dan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!