Home >
スポンサー広告 >
PEAR XML_RPC2を使用してMovabletypeに外部から記事を投稿してみました PHP >
PEAR XML_RPC2を使用してMovabletypeに外部から記事を投稿してみました
[ PHP ]
PEAR XML_RPC2を使用してMovabletypeに外部から記事を投稿してみました
- 2011-07-12 :
- コメント : 1 :
- トラックバック : 0
MovableTypeにはXML-RPCインターフェースが準備されていて、外部から記事の投稿、更新等を行うことができます。
phpでXML-RPCプロトコルを利用するにはPEAR::XML_RPC2というライブラリを使うとよいそうです。
PEARはPHPのクラスライブラリを集めたものです。
phpでXML-RPCプロトコルを利用するにはPEAR::XML_RPC2というライブラリを使うとよいそうです。
PEARはPHPのクラスライブラリを集めたものです。
1.PEAR::XML_RPC2をインストールする。
PEAR Package Information: XML_RPC2 download
http://pear.php.net/package/XML_RPC2/download
バージョンのリンクをクリックするとでダウンロードできます。
中にあるXMLフォルダを任意の場所に配置します。
2.php.iniでcURL拡張モジュールが有効になっているか確認する。
無効だった場合は有効にします。
phpinfo() を実行してphp.iniのパスを確認
---------------
<?php
phpinfo();
?>
---------------
php.ini を開き、extention=php_curl.dll の行のコメントアウトを解除
再起動してphp.ini を再読み込み
phpinfo()を実行して有効になっているかどうか確認
3.MTに記事を投稿する。
投稿用ユーザ名とパスワードが必要です。ログインパスワードでは無いので注意。
MovableType 管理画面の
ユーザー → 一覧 → ユーザーの管理 → Webサービスパスワード からパスワードを取得できます。
つまずいたところとその対処法:
・カスタムフィールドが追記にそのまま入ってしまってカスタムフィールドとして読み込んでくれない。
追記とカスタムフィールド部分をダブルクォーテーションでくくると読み込んでくれました。
・MTに投稿した記事を確認すると文字化けしていて何が書いてあるのかわからない。
記事投稿用のmetaWeblog. XML-RPXクライアントの生成時のオプションに 'escaping'=> 'markup' を追加すると文字化けしなくなりました。
PEARのXML_RPC2が文字化けする件
オプションの詳細 $escaping- PEAR XML_RPC2ドキュメント Class: XML_RPC2_Client
・記事の公開設定を false にてみても、おもいっきし公開されている。
mt-config.cgi に NoPublishMeansDraft 1 の記載がないと公開、非公開の設定はできず、すべて公開されるそう。
なので mt-config.cgi に NoPublishMeansDraft 1 を記載したら非公開にすることができました。
Movable Type ドキュメント 付録 環境変数リファレンス NoPublishMeansDraft
参考:
小粋空間 PHPでXML-RPCを利用する方法
XML-RPCを使ってMovableTypeに投稿する(PHP版)
PEAR XML_RPC2ドキュメント Class: XML_RPC2_Client
PEAR Package Information: XML_RPC2 download
http://pear.php.net/package/XML_RPC2/download
バージョンのリンクをクリックするとでダウンロードできます。
中にあるXMLフォルダを任意の場所に配置します。
2.php.iniでcURL拡張モジュールが有効になっているか確認する。
無効だった場合は有効にします。
phpinfo() を実行してphp.iniのパスを確認
---------------
<?php
phpinfo();
?>
---------------
php.ini を開き、extention=php_curl.dll の行のコメントアウトを解除
再起動してphp.ini を再読み込み
phpinfo()を実行して有効になっているかどうか確認
3.MTに記事を投稿する。
投稿用ユーザ名とパスワードが必要です。ログインパスワードでは無いので注意。
MovableType 管理画面の
ユーザー → 一覧 → ユーザーの管理 → Webサービスパスワード からパスワードを取得できます。
<html>
<head>
<title>XML-RPC Client</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>XML-RPC Client</h1>
<?php
set_include_path('C:\test\path'); //XMLフォルダを置いたパスを指定
require_once('./XML/RPC2/Client.php');
$encoding = 'UTF-8'; // 文字エンコーディング
$uri = 'http://〜/mt-xmlrpc.cgi'; //mt-xmlrpc.cgiの場所
$user = 'userid'; // ユーザーID
$pass = 'password'; // パスワード
//投稿データを作成
$blog_id = '1'; // ブログID
$cat_id = '5'; // カテゴリID
$entry_title = 'test title'; // タイトル
$entry_date = '2011-07-07'; // 日付
$entry_keywords = 'keyword1, keyword2'; // キーワード
$entry_tags = 'tag1, tag2' ; // タグ
$entry_body = 'test body'; // 本文
// 追記とカスタムフィールド
$entry_mor = "entry more\n"."custom1=aaa\n"."custom2=bbb";
$contents = array( 'title' => $entry_title
,'description' => $entry_body
,'dateCreated' => $entry_date
,'mt_keywords' => $entry_keywords
,'mt_tags' => $entry_tags
,'mt_text_more' => $entry_mor
);
// 公開設定 ※注意!mt-config.cgi に NoPublishMeansDraft 1 の記載がないと公開、非公開の設定はできません。
$publish = true;
// 記事投稿用 metaWeblog. XML-RPXクライアントの生成
$metaWeblogoptions = array( 'escaping' => 'markup'
,'prefix' => 'metaWeblog.'
,'encoding' => $encoding );
$metaWeblogClient = XML_RPC2_Client::create($uri, $metaWeblogoptions);
// 投稿を実行 $resultには記事IDが返ってくる
$result = $metaWeblogClient->newPost($blog_id, $user, $pass, $contents, $publish);
// 記事再構築用 mt. XML-RPXクライアントの生成
$mtoptions = array( 'prefix' => 'mt.'
,'encoding' => $encoding );
$mtClient = XML_RPC2_Client::create($uri, $mtoptions);
if($cat_id != ''){
//カテゴリを付与
$category = array('categoryId' => $cat_id , 'isPrimary' => 1 );
$categories = array($category);
$mtClient->setPostCategories($result, $user, $pass, $categories);
}
//再構築 成功なら1がが返ってくる
$status = $mtClient->publishPost($result, $user, $pass);
echo $status;
?>
</body>
</html>
つまずいたところとその対処法:
・カスタムフィールドが追記にそのまま入ってしまってカスタムフィールドとして読み込んでくれない。
追記とカスタムフィールド部分をダブルクォーテーションでくくると読み込んでくれました。
・MTに投稿した記事を確認すると文字化けしていて何が書いてあるのかわからない。
記事投稿用のmetaWeblog. XML-RPXクライアントの生成時のオプションに 'escaping'=> 'markup' を追加すると文字化けしなくなりました。
PEARのXML_RPC2が文字化けする件
オプションの詳細 $escaping- PEAR XML_RPC2ドキュメント Class: XML_RPC2_Client
・記事の公開設定を false にてみても、おもいっきし公開されている。
mt-config.cgi に NoPublishMeansDraft 1 の記載がないと公開、非公開の設定はできず、すべて公開されるそう。
なので mt-config.cgi に NoPublishMeansDraft 1 を記載したら非公開にすることができました。
Movable Type ドキュメント 付録 環境変数リファレンス NoPublishMeansDraft
参考:
小粋空間 PHPでXML-RPCを利用する方法
XML-RPCを使ってMovableTypeに投稿する(PHP版)
PEAR XML_RPC2ドキュメント Class: XML_RPC2_Client