雑記まみむメモ

雑記、メモ、技法、話題の騒動などを紹介します。

PHPでWordPressに自動投稿「Wordpress XML-RPC Class」

Wordpress XML-RPC Class」というクラスを使用するとWordPressの自動投稿ができるようなので 試してみたいと思います。

1.go-pear.php(PEAR)を入手

http://pear.php.net/go-pear 上記のリンクで「対象をファイルに保存」してtxtファイルをダウンロードする。 その後、名前を「go-pear.php」に変える。 1 2

2.go-pear.phpをサーバに上げる

新しくwordpressフォルダ下に「install」という名前のフォルダを作成しその下に「go-pear.php」を入れる

/var/www/wordpress/install/go-pear.php

3.go-pear.php(PEAR)をインストール

http://[自サイトのドメイン]/install/go-pear.phpにアクセス 3 1.「Next >>」を押下 2. Installation prefix ($prefix) =>「http://[自サイトのドメイン]/install」となっている事を確認 3. 11. php.exe path, optional (CLI command tools) => 「php.exe path, optional」を設定 4. installを押下 4 5. しばらく待機する.... ... ... ... 6. 21%で止まっていたのでhttpderror.logをのぞいてみた

[Thu Dec 31 17:51:01 2015] [error] [client 114.186.29.67] PHP Fatal error:  Class 'PEAR' not found in /var/www/wordpress/install/go-pear.php on line 697, referer: http://manyitem.link/install/go-pear.php?step=install

どうやらdownload_url()という関数を使用するが、リダイレクトに対応してない為 正常に動作しないらしい。 新go-pear.php そこでファイルを上書して再度Installを実行する。

Installation Completed !

無事インストール完了!

4.XML-RPCをダウンロード

http://[自サイトのドメイン]/install/index.phpにアクセス 右上のSearch package by nameという所でRPCと入力 +マークを押下 スクリーンショット (1) インストールが終われば完了

5.Wordpress XML-RPC Classのダウンロード

WordPress XML-RPC Class

wp.xmlrpc.phpとdemo.phpをサーバに上げる

/var/www/wordpress/wp.xmlrpc.php
/var/www/wordpress/demo/demo.php

6.記事のテスト投稿を行う

wp.xmlrpc.phpを修正

require_once('install/PEAR/XML/RPC.php');

demo.phpを修正

<?php
require_once('../wp.xmlrpc.php');

$host     = 'localhost';
$user     = '[ユーザ名]';
$password = '[password]';
$endpoint = 'http://[自サイトのドメイン]/xmlrpc.php';

$wp = new wpXMLRPC($endpoint, $host, $user, $password);

$data = array(
  'post_title' => 'タイトル',
  'post_content' => '内容です!',
  'post_thumbnail' => 'test.jpg',
  'terms_names' => array(
    'post_tag' => array('タグ1', 'タグ2')
  )
);

$wp->newPost($data);
?>

投稿テスト開始 http://[自サイトのドメイン]/demo/demo.phpにアクセスする 記事が投稿されることを確認する 完了。

どうやらpost_tagに全角文字が使えない模様 その場合、「[error] => 無効なキーワード ID」が返ってきます。 また、同じ記事の連投も同様のメッセージが返ってきます。 このサンプルでは下書き投稿となってしまいます。 公開設定で投稿したい場合は 'post_status' => 'publish',を追加しましょう。

参考サイト 【とっても便利】WordPressの記事投稿できるクラス『wp.xmlrpc.php』【自動投稿】 | トリまとめブログ PEARのブラウザによるインストールがうまくいかなかったのでgo-pear.phpを修正 - 風柳メモ