[PHP] XMLRPC를 이용한 WordPress 포스트 등록
xmlrpc를 이용한 워드프레스 포스트 등록 기능이다. 공개된 xmlrpc client를 사용했으며 UI는 Bootstrap을 이용했다. 첨부파일을 다운로드 후 웹서에 업로드한 후 브라우저에서 접속하면 아래와 같은 화면이 표시된다. 각 필드를 직접 입력하고 Post 버튼을 클릭하면 워드프레스 블로그에 포스트가 등록된다.
- https://codex.wordpress.org/XML-RPC_WordPress_API
- https://github.com/letrunghieu/wordpress-xmlrpc-client
wp-poster : wp-poster.zip
워드프레스 블로그에 포스트를 등록하는 코드는 아래와 같다. 개발은 PHP 7.2.x 버전에서 진행됐다.
<?php
require './_autoload.php';
require './lib/functions.php';
$endpoint = trim($_POST['wp']);
$id = trim($_POST['id']);
$pass = trim($_POST['pass']);
$title = trim($_POST['title']);
$content = trim($_POST['content']);
$category = trim($_POST['category']);
$tag = trim($_POST['tag']);
if(!$endpoint || !$id || !$pass || !$title || !$content)
die_json('XMLRPC URL, User ID, User Password, Title, Content를 확인해 주십시오.');
$wpClient = new \HieuLe\WordpressXmlrpcClient\WordpressClient();
$wpClient->setCredentials($endpoint, $id, $pass);
try {
$blogs = $wpClient->getUsersBlogs();
}
catch(Exception $e) {
die_json($e->getMessage());
}
unset($blogs);
$postContent = $content;
$_category = array_map('trim', explode(',', $category));
$_tag = array_map('trim', explode(',', $tag));
$content = array(
'terms_names' => array(
'category' => $_category,
'post_tag' => $_tag
),
/*
'custom_fields' => array(
array('key' => '_yoast_wpseo_focuskw_text_input', 'value' => '테스트 포커스')
)
*/
);
try {
$post_id = $wpClient->newPost((string)$title, $postContent, $content);
}
catch(Exception $e) {
die_json($e->getMessage());
}
if(!$post_id)
die_json('Posting failed.');
else
die_json('OK');
기능을 좀 더 발전시키면 아래와 같은 것도 가능하다. 아마존 API를 이용해 ASIN 코드를 입력하면 자동으로 상품정보를 가져와 포스트로 등록한다.