[WP] XMLRPC를 이용한 WordPress(워드프레스) 포스트 등록

워드프레스 포스트 등록을 자동화 하는 과정에 XMLRPC를 이용한 방법을 테스트 했다. XMLRPC 클라이언트는 https://github.com/letrunghieu/wordpress-xmlrpc-client 를 이용했다. XMLRPC를 이용해 이미지 파일 업로드 후 업로드한 이미지 파일을 포스트에 표시되도록 하는 것이 가능한지만을 먼저 테스트 했기 때문에 예외처리 등은 빠져있다.

참고 : https://codex.wordpress.org/XML-RPC_WordPress_API

<?php
require './lib/WordpressClient.php';

# Your WordPress website is at: http://wp-website.com
$endpoint = "https://exmaple.com/xmlrpc.php";

# Create client instance
$wpClient = new \HieuLe\WordpressXmlrpcClient\WordpressClient();

# Set the credentials for the next requests
$wpClient->setCredentials($endpoint, 'user id', 'user password');

$file = './files/81UM0TSMgLL._SL1500.jpg';

$name = basename($file);
$mime = mime_content_type($file);
$bits = file_get_contents($file);

$media = $wpClient->uploadFile($name, $mime, $bits);

//print_r($media);

if(is_array($media) && !empty($media)) {
    if(isset($media['metadata']['sizes']['large'])) {
        $imgSize = 'large';
        $width = '640';
    } else {
        $imgSize = 'medium';
        $width = $media['metadata']['sizes'][$imgSize]['width'];
    }
    
    $imgClass = 'alignnone';
    $imgSrc = $media['metadata']['sizes'][$imgSize]['file'];
    $imgSrc = str_replace($media['metadata']['sizes']['thumbnail']['file'], $media['metadata']['sizes'][$imgSize]['file'], $media['thumbnail']);
    
    $mediaLink = '<a href="'.$media['link'].'"><img class="'.$imgClass.' size-'.$imgSize.' wp-image-'.$media['attachment_id'].'" src="'.$imgSrc.'" alt="" width="'.$width.'" /></a>';

    $post = $wpClient->newPost('테스트 '.date('Y-m-d H:i:s'), $mediaLink.PHP_EOL.'테스트 내용');
}

print_r($post);

위 코드에서 $endpoint 는 테스트할 워드프레스 블로그 주소로 변경하고 user id, user password 는 테스트 블로그의 로그인 정보를 입력한다.

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.