XML-RPCライブラリを利用してWordPressを外部サーバから投稿する方法
2024/03/04
WordPressをダッシュボードからではなく、外部サーバのプログラムから投稿したかった。調べてみると「XML-RPC」というライブラリでいけるみたい。以下にダウンロード先と使い方と処理をまとめた関数をメモ。
ダウンロード先
http://scripts.incutio.com/xmlrpc/
関数
//----------------------------------------
// WordPress外部投稿
//
// **引数**
// $domain(string) 投稿したいWordPressを置いているサーバのドメイン
// $user(string) WordPressのユーザー
// $pass(string WordPressのパスワード
// $author(int) 投稿者のID
// $title(string) 投稿タイトル
// $contents(string) 投稿本文
// $status(string) 投稿状態。デフォルトは下書き。publishだと公開
// $category(int) 投稿カテゴリ。デフォルトは未分類
// $tag(array) 投稿タグ。デフォは何もなし
// $img(string) アイキャッチ画像。[./img/test.jpg]のようにディレクトリ形式で指定。デフォは何もなし
//
// **返り値**
// bool(true or false)
//----------------------------------------
function postWordPress( $domain, $user, $pass, $author = 1, $title, $contents, $status = 'draft', $category = 1, $tag = array(), $img = '' )
{
//必須引数のチェック
if( !$domain || !$user || !$pass || !$title || !$contents ){
return false;
}
//ライブラリの読み込み
include_once('./IXR_Library.php');
$client = new IXR_Client($domain . 'xmlrpc.php');
//画像が指定されている場合はチェックとアップロード
if( $img && file_exists($img) ){
$imgInfo = getimagesize($img);
$type = $imgInfo['mime'];
$bits = new IXR_Base64(file_get_contents($img));
$imgData = $client->query(
'wp.uploadFile',
1,
$user,
$pass,
array(
'name' => 'test.jpg',
'type' => $type,
'bits' => $bits,
'overwrite' => false
)
);
$imgResult = $client->getResponse();
}
$postData = array(
'post_author' => $author,
'post_status' => $status,
'post_title' => $title,
'post_content' => $contents,
'terms' => array('category' => array($category)),
'terms_names' => array('post_tag' => $tag)
);
if( $imgResult ){
$postData['post_thumbnail'] = $imgResult['id'];
}
$return = ( $result = $client->query('wp.newPost', 1, $user, $pass, $postData) ) ? true : false;
return $return;
}
使い方
上記関数を書いたファイルと同じディレクトリにXML-RPCの「IXR_Library.php」をアップロードしておく。あとは引数を設定。例としては以下のような感じ。
$test = postWordPress(
'http://hogehoge.com/',
'sampleuser',
'samplepass',
1,
'ここにタイトル',
'ここに本文',
'publish',
1,
array('タグ1','タグ2'),
'./img/test.jpg'
);
var_dump($test); //true or false
返り値はbool。
注意点として$domainの部分はxmlrpc.phpを置いてあるディレクトリを指定しないといけない。wp-config.phpとか置いてあるところ。
http://hoge.com/wordpress/xmlrpc.phpという構成になっている場合、サイトの表示は「http://hoge.com」だけど、今回指定するのは「http://hoge.com/wordpress/」になるので注意。
関連記事
-
-
WordPressと別プログラム間でSESSIONが引き継げない場合の対応方法
同一サーバ内に自作したプログラムとWordPressを設置しており両者でセッショ ...
-
-
他所のサーバからWordPressの記事情報をpostIDを指定して取得する方法
他所のサーバからWPの記事IDを指定した上で、当該IDのタイトル・アイキャッチ画 ...
-
-
WP Social Bookmarking LightでSNSボタンが表示されない際の対応方法
WordPressでWordPress WP Social Bookmarkin ...
-
-
WordPressのWP-Mail-SMTPプラグインが動かない
PHPのバージョンを下げてからWordPressで外部メールサーバが使えるWP- ...
-
-
WordPressのCron設定(wp-cron.php)を変更し負荷対策する方法
WordPressのcron設定(wp-cron.php)を変更することで負荷が ...