ホームページ >CMS チュートリアル >&#&プレス >XML-RPC と PHP を使用して画像を WordPress にアップロードする
ここでは、WordPress であっても XML-RPC プロトコルとその仕組みに精通しており、以前に使用したことがあることが前提となっています。投稿の追加やページの削除など。テキストの場合はそれで十分ですが、画像などのファイルを WordPress に送信する場合はどうなるでしょうか?
このチュートリアルでは、画像を WordPress に送信して管理パネルのメディア セクションに表示する非常に簡単な方法を説明します。この画像は PHP を使用して送信するので、このコードを WordPress プラグイン、テーマ、またはこの例のように単純な PHP で使用することもできます。
これから何を行うのか、そしてそれをどのように行うのかについての一般的なアイデアを得るために、計画を立ててこのチュートリアルを開始します。基本的に、ファイル (より正確には JPEG 画像) をローカルの WordPress インストールにアップロードする PHP スクリプトを作成します。
PHP ライブラリを使用して、PHP で XML-RPC クライアントを作成します。これを使用して、WordPress XML-RPC サーバーに接続し、データを送信します。クライアントは、「The Incutio XML-RPC Library for PHP」という PHP ライブラリです。これは script.incutio.com
にあります。注意してください: この例は、このチュートリアルのデモンストレーションのみを目的としており、非常に基本的で簡単な例です。
このチュートリアルでは、まず、PHP と MySQL がインストールされた WordPress の動作バージョンが Apache サーバーにインストールされている必要があります。ローカルで使用することもできます。これが私が推奨する方法であり、このチュートリアルで実際に使用する例です。
もう 1 つ必要になるのは、このチュートリアルで使用する XML-RPC ライブラリです。このライブラリは BSD ライセンス付きで無料であり、scripts.incutio.com
で見つけることができます。ライブラリは実際には、IXR_Library.php という名前の PHP ファイルです。このチュートリアルではこれを使用します。次に行う必要があるのは、ローカル サーバー インストールの htdocs (または Web ルート) フォルダー内にディレクトリを作成することです。ここに IXR_Library.php ファイルをコピーし、 ファイルを作成します。その隣にあるindex.phpファイル。 index.php ファイルは空にする必要があります。
WordPress のインストールで行う必要がある最も重要なことは、XML-RPC サービスをアクティブ化することです。 WordPress はデフォルトでこの機能を無効にしているため、管理パネルの設定に移動して有効にする必要があります。これを行うには、Settings -> Writing に移動し、Remote Publishing 見出しの下に、XML-RPC Default の横にあるチェックボックスを見つけます。これを選択解除します。それを選択し、「変更を保存」をクリックします。
これで、WordPress の組み込み XML-RPC サーバーと通信できるようになりました。
index.php ファイルを開きます。
ライブラリを含めるindex.php ファイルを編集して次のコードを追加します (例に示すように、PHP タグで始めることを忘れないでください)。 リーリー これは基本的に、スクリプトが機能するために必要なすべてをカバーしています。つまり、先ほど含めたライブラリのクライアント部分を使用します。これは後で行います。
画像(Jpegファイル)の読み込み
ファイル (同じディレクトリ内) の隣に配置され、次のセクションでその内容を読み取ります。後で使用できるように変数に保存されます。 リーリー 上記のコードが行うことは、まず、ファイル名の文字列値を含む
$myfile という新しい変数を作成することです。これは同じフォルダー内にあるため、カードは必要ありません。他のパス情報はすべて保持します。名前だけを保持します (この場合は test.php
)。
次にファイルを開く必要があるため、PHP 関数
を使用してこれを行います。これを、前の変数 $myFile
の最初の引数と組み合わせます。 2 つのパラメータは、ファイルに対して実行する操作を表す別の文字列と一緒に使用されます。文字列値 r
は、 が
を読み取っていることを示します。ファイルを開いた結果を変数 $fh に追加します。
<p>然后,因为我们需要文件内容长度,所以我们将使用 PHP 函数 <code>$filesize
返回的值创建变量 $fs
,该函数使用参数 $myFile
最后,我们进入读取部分,我们将执行读取操作的函数返回的值赋予变量 $theData
,即 fread
。该函数使用两个参数,第一个是之前打开的文件变量($fh
),第二个是之前设置的文件大小($fs
)。
最后,我们使用函数 fclose
及其参数 $fh
关闭打开的文件。此时,我们已经有了 jpg 文件的内容,我们将把它发送到 WordPress 的 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 属性赋予覆盖同名现有文件的选项。
要使该脚本正常工作,我们需要做的最后一件事是通过激活来自 $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 中国語 Web サイトの他の関連記事を参照してください。