WordPressに記事を自動投稿するPHPプログラムを投稿日指定に書き換えてみた

ブログ自動投稿

以前、WordPressに自動で記事を投稿するPHPプログラムを書いてみたのだが旧記事を旧日付で再投稿する必要性が出てきた。

WordPressに自動で記事を投稿するPHPプログラム を書いてみた
WordPressに自動で記事を投稿するPHPプログラム を書いてみた。 先日FC2ブログに自動投稿するプログラムを書いたが、そのまま転用してWordpres...

そこで、WordPressに記事を自動投稿するPHPプログラムを投稿日指定に書き換えてみた。

さして変更箇所はなく、$kiji_stamp の変化させる変数が増えただけですね。
ブロブ自動投稿プログラム
—ここから———————————–
<?php
require_once(“XML/RPC.php”); //XML-RPC package
$GLOBALS[‘XML_RPC_defencoding’] = “UTF-8”;
//WordPress用定義情報
$wp_blogid = “”;
// //////////////////////////////
// 変更箇所
// //////////////////////////////
//Wordpressが導入されているドメインを記入
$wp_host = “marumusi.yahoo.com”;
//Wordpressのディレクトリ配下のxmlrpc.phpを記入
$wp_xmlrpc_path = “/avblog/xmlrpc.php”;
//ブログのログインIDを記入
$wp_user = “admin”;
//ブログのログインパスワードを記入
$wp_passwd = “password”;
//記事情報
//投稿モード(0:下書記事、1:公開記事)
$kiji_mode = 1;
//記事のタイトル
$kiji_title = “WordPressに投稿日指定の記事を自動投稿するPHPプログラム のテスト記事(タイトル)”;
//記事の本文
$kiji_honbun = “WordPressに投稿日指定の記事を自動投稿するPHPプログラム のテスト記事(本文)<br /><br />
このサンプルプログラムの詳細は、<a href=\”http://antenna.infomixer.net/\”>まるむしアンテナ</a>のブログにて。<br />”;
//記事の投稿日
//基本形:yyyy:mm:dd hh:mm:ss
//基本形のsplit文字:”/”,”:”,” ”
$dt = “2000/01/02 03:04:05”;
$ary = split(“[/: ]”,$dt);
$kiji_stamp = mktime($ary[3]-9,$ary[4],$ary[5],$ary[1],$ary[2],$ary[0]); //時分秒月日年の順、時の-9は時差補正

////////////////////////////////
//以下固定
$bm = new BlogManager();
$bm->post_blog($kiji_mode,$kiji_title,$kiji_honbun,$kiji_stamp);
class BlogManager {
function post_blog($kiji_mode,$kiji_title,$kiji_honbun,$kiji_stamp){
global $wp_xmlrpc_path,$wp_host,$wp_user,$wp_passwd;
//クライアントの作成
echo “クライアント作成<br\n>”;
$c = new XML_RPC_client( $wp_xmlrpc_path, $wp_host, 80 );
//送信データ
$blogid = new XML_RPC_Value($wp_blogid, ‘string’);
$username = new XML_RPC_Value($wp_user, ‘string’);
$passwd = new XML_RPC_Value($wp_passwd, ‘string’);
$content = new XML_RPC_Value(array(
‘title’ => new XML_RPC_Value($kiji_title, ‘string’),
‘description’=> new XML_RPC_Value($kiji_honbun, ‘string’),
‘dateCreated’=> new XML_RPC_Value(date(“Ymd\TH:i:s”,$kiji_stamp), ‘dateTime.iso8601’)
), ‘struct’);
$publish = new XML_RPC_Value($kiji_mode, ‘boolean’);
//XML-RPCメソッドのセット
$message = new XML_RPC_Message(‘metaWeblog.newPost’,array($blogid, $username, $passwd, $content, $publish) );
$this->send_message($c,$message);
}
function get_users_blogs(){
global $wp_xmlrpc_path,$wp_host,$wp_user,$wp_passwd;
//クライアントの作成
echo “クライアント作成<br\n>”;
$c = new XML_RPC_client( $wp_xmlrpc_path, $wp_host, 80 );
$appkey = new XML_RPC_Value ( ” , ‘string’ );
$username = new XML_RPC_Value ( $wp_user , ‘string’ );
$passwd = new XML_RPC_Value ( $wp_passwd, ‘string’ );
//メッセージ作成
echo “メッセージ作成<br\n>”;
$message = new XML_RPC_Message( “blogger.getUsersBlogs”,array($appkey, $username, $passwd) );
send_message($c,$message);
}
function send_message($c,$message){
//メッセージ送信
echo “メッセージ送信<br\n>”;
$result = $c->send($message);
if( !$result ){
exit(‘Could not connect to the server.’);
}else if( $result ->faultCode() ){
exit(‘XML-RPC fault (‘.$result ->faultCode().’): ‘
.$result ->faultString());
}
return $result ;
}
}
?>

—ここまで———————————–
以前同様、ファイルをアップしておきます。
wp_blog2.txt

拡張子がphpのままだとアップできないのでtxtに変更してあります。
ダウンロードしたら wp_blog2.txt をwp_blog2.php に変更してください。
とりあえず動かしてみたい場合は、
ソースの$wp_host,$wp_xmlrpc_path,$wp_user,$wp_passwd,$wp_passwdを自分のものに書き換えて、
phpが実行できるホームページエリアにアップロードして実行すれば動きます。
実行の仕方は、たとえば、
http://anatano_hp.com/wp_blog.php
といった感じですね。
正常に動くと、ブラウザには、
クライアント作成
メッセージ送信
と2行表示されます。
うまく行ったら、$kiji_mode,$kiji_title,$kiji_honbun,$kiji_stamp
の内容を書き換えて実行してみましょう。
連続投稿するなら、上記の変数を書き換えながら、
$bm = new BlogManager();
$bm->post_blog($kiji_mode,$kiji_title,$kiji_honbun,$kiji_stamp);

ここまでをループ処理すればOKですね。^^
ちなみに変更箇所は、赤い部分です。
$dt = “2000/01/02 03:04:05”;
$kiji_stampを書き換えと言いましたが、実際にセットするのは、$dt です。
$ary = split(“[/: ]”,$dt);
ここで各要素に分割します。よって$dtに日付の区切りとなる文字をセットしておきます。
もし$dt = “2000-01-02 03:04:05”;なら
$ary = split(“[-: ]”,$dt);
となります。

$kiji_stamp = mktime($ary[3]-9,$ary[4],$ary[5],$ary[1],$ary[2],$ary[0]); //時分秒月日年の順、時の-9は時差補正
ここで書式に合わせた形式に変換します。
-9 は、時差補正です。標準時で処理されちゃうので日本時間に変換します。
関数で時差変換するのが筋ですが、面倒なので直接-9時間で補正しています。
また、もし日付のみで時間が無いなら、
$dt = “2000/01/02”;
$ary = split(“[/]”,$dt);
$kiji_stamp = mktime(0,0,0,$ary[1],$ary[2],$ary[0]);
となります。
時間の部分は、ダミーで0をセットしておきましょう。
これで過去記事、未来記事、自由自在ですね。^^

コメント

  1. 匿名 より:

    ソースの張り方くらい覚えよう

  2. まるむし より:

    ソースの特殊文字がエスケープされてることでしょうね。
    ブログサーバー移行の際にしくじったかな?

    しかしまぁ、「ソースの文字が化けてますよ。」ぐらいだと
    「教えて頂きありがとうございます!!」
    って気持ちになりますが、匿名でこう言われると気分が悪いものですね。
    無能な上司に遠まわしに嫌味を言われているような気分になります。

    って事で、まるむしの心の広さは虫ほどなので、ソースはこのまま放置します。 :P
    PHP使っているならサックっと一発変換できるでしょうしね。 :P

    ※ぶっちゃけ、この記事のソースはネットに拡散してます。
     転載の許可を出したことはないので、すべて無許可のコピペ&ちょっと改変ってサイトばかりですが、
     中には綺麗に改良してくれているサイトもあるようですよ。

タイトルとURLをコピーしました