귀하는 WordPress에서도 XML-RPC 프로토콜과 작동 방식에 익숙하고 이전에 사용해 본 적이 있다고 가정합니다. 게시물 추가, 페이지 삭제 등 텍스트에는 모두 좋지만 이미지와 같은 파일을 WordPress로 보내려면 어떻게 해야 할까요?
이 튜토리얼에서는 관리자 패널의 미디어 섹션에 표시되도록 WordPress에 이미지를 보내는 아주 간단한 방법을 다룹니다. 우리는 PHP를 사용하여 이 이미지를 보낼 것이므로 이 코드를 WordPress 플러그인, 테마 또는 예제와 같은 일반 PHP와 함께 사용할 수 있습니다.
우리가 할 일과 수행 방법에 대한 일반적인 아이디어를 얻기 위해 계획을 가지고 이 튜토리얼을 시작하겠습니다. 기본적으로 우리는 로컬 WordPress 설치에 파일(더 정확하게는 jpeg 이미지)을 업로드하는 PHP 스크립트를 만들 것입니다.
우리는 PHP 라이브러리를 사용하여 PHP에서 XML-RPC 클라이언트를 생성할 것입니다. 이를 사용하여 WordPress XML-RPC 서버에 연결하고 데이터를 보낼 것입니다. 클라이언트는 script.incutio.com
에서 찾을 수 있는 "The Incutio XML-RPC Library for PHP"라는 PHP 라이브러리입니다.참고: 이 예제는 이 튜토리얼의 데모 목적으로만 사용되었으며 매우 기본적이고 간단한 예제입니다.
이 튜토리얼에서 가장 먼저 필요한 것은 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 서버와 통신할 수 있습니다.
재미있는 부분이 여기에 있습니다. 시작해 보세요! 즐겨 사용하는 코드 편집기를 사용하여 이전에 언급한 index.php 파일을 엽니다.
가장 먼저 해야 할 일은 나중에 사용할 수 있도록 방금 다운로드한 라이브러리 파일을 포함시키는 것입니다. 따라서 index.php 파일을 편집하고 다음 코드를 추가합니다(예제에 표시된 것처럼 PHP 태그로 시작하는 것을 잊지 마세요):
으아아아여기에는 기본적으로 스크립트가 작동하는 데 필요한 모든 것이 포함됩니다. 간단히 말해서 방금 포함시킨 라이브러리의 클라이언트 부분을 사용하겠습니다. 나중에 이 작업을 수행하겠습니다.
워드프레스에 이미지(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 服务器。
在下一部分中,我们将使用刚刚导入的库连接到 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!