XML-RPC 및 PHP를 사용하여 WordPress에 이미지 업로드

WBOY
풀어 주다: 2023-09-03 17:45:24
원래의
718명이 탐색했습니다.

XML-RPC 및 PHP를 사용하여 WordPress에 이미지 업로드

귀하는 WordPress에서도 XML-RPC 프로토콜과 작동 방식에 익숙하고 이전에 사용해 본 적이 있다고 가정합니다. 게시물 추가, 페이지 삭제 등 텍스트에는 모두 좋지만 이미지와 같은 파일을 WordPress로 보내려면 어떻게 해야 할까요?

이 튜토리얼에서는 관리자 패널의 미디어 섹션에 표시되도록 WordPress에 이미지를 보내는 아주 간단한 방법을 다룹니다. 우리는 PHP를 사용하여 이 이미지를 보낼 것이므로 이 코드를 WordPress 플러그인, 테마 또는 예제와 같은 일반 PHP와 함께 사용할 수 있습니다.


1단계계획

우리가 할 일과 수행 방법에 대한 일반적인 아이디어를 얻기 위해 계획을 가지고 이 튜토리얼을 시작하겠습니다. 기본적으로 우리는 로컬 WordPress 설치에 파일(더 정확하게는 jpeg 이미지)을 업로드하는 PHP 스크립트를 만들 것입니다.

우리는 PHP 라이브러리를 사용하여 PHP에서 XML-RPC 클라이언트를 생성할 것입니다. 이를 사용하여 WordPress XML-RPC 서버에 연결하고 데이터를 보낼 것입니다. 클라이언트는 script.incutio.com

에서 찾을 수 있는 "The Incutio XML-RPC Library for PHP"라는 PHP 라이브러리입니다.

참고: 이 예제는 이 튜토리얼의 데모 목적으로만 사용되었으며 매우 기본적이고 간단한 예제입니다.


2단계환경을 준비하세요

이 튜토리얼에서 가장 먼저 필요한 것은 Apache 서버에 PHP 및 MySQL이 설치된 WordPress의 작동 버전입니다. 로컬에서 사용할 수도 있습니다. 이것이 바로 제가 권장하는 것이며 실제로 이 튜토리얼에서 사용할 예제입니다.

또 다른 필요한 것은 이 튜토리얼에서 사용하는 XML-RPC 라이브러리입니다. 라이브러리는 BSD 라이센스가 있으면 무료이며 scripts.incutio.com에서 찾을 수 있습니다

라이브러리는 실제로 이 튜토리얼에서 사용할 IXR_Library.php라는 PHP 파일입니다. 다음으로 해야 할 일은 로컬 서버 설치의 htdocs(또는 웹 루트) 폴더 내에 IXR_Library.php 파일을 복사하고 그 옆에 index를 만드는 것입니다. 파일. 이제 index.php 파일을 비워야 합니다.

워드프레스 설치에서 가장 중요한 일은 XML-RPC 서비스를 활성화하는 것입니다. WordPress에서는 이 기능을 기본적으로 비활성화하므로 관리자 패널의 설정으로 이동하여 활성화해야 합니다. 이렇게 하려면 Settings -> Writing으로 이동하여 Remote Publishing 제목 아래에 기본적으로 선택 해제된 XML-RPC 옆의 확인란을 찾을 수 있습니다. 이를 선택하고 변경 사항 저장을 클릭합니다.

이제 WordPress에 내장된 XML-RPC 서버와 통신할 수 있습니다.


3단계코드 설명

재미있는 부분이 여기에 있습니다. 시작해 보세요! 즐겨 사용하는 코드 편집기를 사용하여 이전에 언급한 index.php 파일을 엽니다.

라이브러리 포함

가장 먼저 해야 할 일은 나중에 사용할 수 있도록 방금 다운로드한 라이브러리 파일을 포함시키는 것입니다. 따라서 index.php 파일을 편집하고 다음 코드를 추가합니다(예제에 표시된 것처럼 PHP 태그로 시작하는 것을 잊지 마세요):

으아아아

여기에는 기본적으로 스크립트가 작동하는 데 필요한 모든 것이 포함됩니다. 간단히 말해서 방금 포함시킨 라이브러리의 클라이언트 부분을 사용하겠습니다. 나중에 이 작업을 수행하겠습니다.

이미지 읽기(Jpeg 파일)

워드프레스에 이미지(jpg 파일)를 보내야 하기 때문에 어떻게든 보내야 합니다. 해결책은 나중에 볼 수 있듯이 XML-RPC 서버 기능이 이를 요청하는 비트 형식으로 보내는 것입니다. 하지만 이렇게 보내려면 내용을 비트로 변환해야 하며 이를 위해서는 내용을 가져와야 합니다. 이 파일(모든 jpg 이미지 파일, 이름은 test.jpg로 지정)은 index.php 파일(같은 디렉터리에 있음) 옆에 배치되고 다음 부분에서는 해당 내용을 읽고 변수에 저장합니다. 나중에 사용하기 위해.

으아아아

위 코드가 하는 일은 우선 파일 이름의 문자열 값을 포함하는 $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 학습자의 빠른 성장을 도와주세요!