Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
XMLRPC で外部から投稿    Fumito Mizuno mizuno@php-web.net
ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
WordPress ブログに投稿する方法1. 管理画面から2. ブログトップから (P2テーマ)3. リモート投稿 (XMLRPC)4. メールで投稿5. その他
ログインブラウザで編集記事公開管理画面から投稿
管理画面から投稿● WordPress の機能をフルに利用できる  ○ アイキャッチ画像  ○ カスタム分類、投稿タイプ、アサイド● 洗練されたユーザーインターフェース  ○ 折り畳み、並べ替え  ○ よく使うものを優先表示
管理画面から投稿● 投稿に直接関係ないメニューもある  ○ 作成者ならシンプルになる● インターネット接続が前提  ○ 下書きの自動保存● ある程度の大きさの画面が前提  ○ 管理画面カスタマイズは可能● バージョンアップでインターフェースが変わる
ブログトップから● P2 テーマを利用すると可能  ○ http://wordpress.org/extend/themes/p2● あるいはテーマを自作する● レイアウトの自由度が高い
ブログトップから投稿● 独自に実装が必要  ○ P2 : 見た目はシンプル、コードは複雑● テーマとの結び付き  ○ テーマを変更しない場合は有力な方法
手元のツールで編集              サーバー  XMLRPC 形式   へ送信  のデータ          リモート投稿
リモート投稿管理画面から投稿 : ウェブメールリモート投稿 : メールソフトを利用● WordPress 以外でも使われている● 手元の端末に合わせたツール ○ http://codex.wordpress.org/Weblog_Client●...
リモート投稿● ソフト毎に機能が異なる  ○ WordPress 独自機能未対応のこともある  ○ 手軽に投稿するには便利    ■ タイトル、本文、画像など● 画像が多い&大きい場合と失敗する  ○ 成功した場合、「投稿ID」が返ってくる
メール投稿● 指定したアドレスにメールを送る  ○ WordPress が取り込む● メールを使える人/環境なら投稿可能  ○ 携帯だけでOK● 編集中はオフラインでも可● 投稿内容が手元に残る
メール投稿● 標準で対応している機能は少ない  ○ 手軽に投稿するには便利    ■ タイトル、本文、画像など● wp-mail.php にアクセスすると反映される  ○ (標準では)リアルタイム反映ではない● 指定アドレスに届いたメールを記事...
ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
実際にリモート投稿を使ってみる      様々な投稿ツールがあります http://codex.wordpress.org/Weblog_Client       ここでは Blogilo を使います      ここから先で紹介するものは、  ...
ブログ投稿ツール Blogilo● MetaWeblogAPI 対応のブログに投稿可能  ○ http://www.xmlrpc.com/metaWeblogApi  ○ MetaWeblogAPI を利用dるツール    ■ Blogger,...
ブログ投稿ツール Blogilo● http://blogilo.gnufolks.org/● GNU GPL v2● Bilbo -> Blogilo (商標問題で改名) ● 日本語化への参加https://translations.laun...
Blogilo をインストール● ソースコードの入手git clone --depth 1 git://anongit.kde.org/kdepim開発ログも取得する場合はgit clone git://anongit.kde.org/kdep...
実際に使ってみる● WordPress 側の設定  ○ 管理画面->投稿設定->リモート投稿     ■ xml-rpc を有効にする● Blogilo の設定  ○ ブログのアドレス  ○ ユーザー名  ○ パスワード
記事を書く● タイトル、本文 (WYSIWYG エディタ)● 画像はドラッグアンドドロップで挿入可能● カテゴリ等の細かい設定は toolbox で● 手元にデータ保存可能● 送信時のみ、要インターネット接続
ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
PHP を使う● Blogilo は C++● 素の PHP を使う● PEAR ライブラリを使う  ○ http://pear.php.net/package/XML_RPC/  ○ pear install XML_RPC● フレームワーク...
$request = xmlrpc_encode_request("blogger.getUsersBlogs", array(,ユーザー名,パスワード));$context = stream_context_create(array(http...
require_once("XML/RPC.php");$GLOBALS[XML_RPC_defencoding] = "UTF-8";$host = "サイトのURL";$xmlrpc_path = "/xmlrpc.php";$userna...
class Getbloginfo extends CI_Controller { public function index() { $this->load->library(xmlrpc); $this->xmlrpc->server(サー...
Upcoming SlideShare
Loading in …5
×

Xml rpc を使ってブログ投稿

3,146 views

Published on

Xml rpc を使ってブログ投稿。WordPress の他、blogger, Movable Type でも利用可能。オープンソースの投稿ツール Blogilo を使った例。 PHP Pear を使う。 CodeIgniter フレームワークを使う。

  • Be the first to comment

Xml rpc を使ってブログ投稿

  1. 1. XMLRPC で外部から投稿 Fumito Mizuno mizuno@php-web.net
  2. 2. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  3. 3. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  4. 4. WordPress ブログに投稿する方法1. 管理画面から2. ブログトップから (P2テーマ)3. リモート投稿 (XMLRPC)4. メールで投稿5. その他
  5. 5. ログインブラウザで編集記事公開管理画面から投稿
  6. 6. 管理画面から投稿● WordPress の機能をフルに利用できる ○ アイキャッチ画像 ○ カスタム分類、投稿タイプ、アサイド● 洗練されたユーザーインターフェース ○ 折り畳み、並べ替え ○ よく使うものを優先表示
  7. 7. 管理画面から投稿● 投稿に直接関係ないメニューもある ○ 作成者ならシンプルになる● インターネット接続が前提 ○ 下書きの自動保存● ある程度の大きさの画面が前提 ○ 管理画面カスタマイズは可能● バージョンアップでインターフェースが変わる
  8. 8. ブログトップから● P2 テーマを利用すると可能 ○ http://wordpress.org/extend/themes/p2● あるいはテーマを自作する● レイアウトの自由度が高い
  9. 9. ブログトップから投稿● 独自に実装が必要 ○ P2 : 見た目はシンプル、コードは複雑● テーマとの結び付き ○ テーマを変更しない場合は有力な方法
  10. 10. 手元のツールで編集 サーバー XMLRPC 形式 へ送信 のデータ リモート投稿
  11. 11. リモート投稿管理画面から投稿 : ウェブメールリモート投稿 : メールソフトを利用● WordPress 以外でも使われている● 手元の端末に合わせたツール ○ http://codex.wordpress.org/Weblog_Client● 編集中はオフラインでも可● 投稿内容が手元に残る
  12. 12. リモート投稿● ソフト毎に機能が異なる ○ WordPress 独自機能未対応のこともある ○ 手軽に投稿するには便利 ■ タイトル、本文、画像など● 画像が多い&大きい場合と失敗する ○ 成功した場合、「投稿ID」が返ってくる
  13. 13. メール投稿● 指定したアドレスにメールを送る ○ WordPress が取り込む● メールを使える人/環境なら投稿可能 ○ 携帯だけでOK● 編集中はオフラインでも可● 投稿内容が手元に残る
  14. 14. メール投稿● 標準で対応している機能は少ない ○ 手軽に投稿するには便利 ■ タイトル、本文、画像など● wp-mail.php にアクセスすると反映される ○ (標準では)リアルタイム反映ではない● 指定アドレスに届いたメールを記事にする ○ 既存記事の更新は非常に大変
  15. 15. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  16. 16. 実際にリモート投稿を使ってみる 様々な投稿ツールがあります http://codex.wordpress.org/Weblog_Client ここでは Blogilo を使います ここから先で紹介するものは、 Blogilo 特有の機能もあります
  17. 17. ブログ投稿ツール Blogilo● MetaWeblogAPI 対応のブログに投稿可能 ○ http://www.xmlrpc.com/metaWeblogApi ○ MetaWeblogAPI を利用dるツール ■ Blogger, Movable Type 等
  18. 18. ブログ投稿ツール Blogilo● http://blogilo.gnufolks.org/● GNU GPL v2● Bilbo -> Blogilo (商標問題で改名) ● 日本語化への参加https://translations.launchpad.net/ubuntu/natty/+source/kdepim/+pots/blogilo/ja/+translate
  19. 19. Blogilo をインストール● ソースコードの入手git clone --depth 1 git://anongit.kde.org/kdepim開発ログも取得する場合はgit clone git://anongit.kde.org/kdepim● Ubuntu の場合 ○ Synaptic パッケージマネージャで検索
  20. 20. 実際に使ってみる● WordPress 側の設定 ○ 管理画面->投稿設定->リモート投稿 ■ xml-rpc を有効にする● Blogilo の設定 ○ ブログのアドレス ○ ユーザー名 ○ パスワード
  21. 21. 記事を書く● タイトル、本文 (WYSIWYG エディタ)● 画像はドラッグアンドドロップで挿入可能● カテゴリ等の細かい設定は toolbox で● 手元にデータ保存可能● 送信時のみ、要インターネット接続
  22. 22. ブログに投稿する方法XMLRPC + Blogilo XMLRPC + PHP
  23. 23. PHP を使う● Blogilo は C++● 素の PHP を使う● PEAR ライブラリを使う ○ http://pear.php.net/package/XML_RPC/ ○ pear install XML_RPC● フレームワークを使う ○ codeigniter.jp/user_guide_ja/libraries/xmlrpc.html
  24. 24. $request = xmlrpc_encode_request("blogger.getUsersBlogs", array(,ユーザー名,パスワード));$context = stream_context_create(array(http => array( method => "POST", header => "Content-Type: text/xml", content => $request)));$file = file_get_contents("xmlrpcのURL", false, $context);$response = xmlrpc_decode($file);if ($response && xmlrpc_is_fault($response)) { trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");} else { print_r($response);} www.php.net/manual/ja/function.xmlrpc-encode-request.php
  25. 25. require_once("XML/RPC.php");$GLOBALS[XML_RPC_defencoding] = "UTF-8";$host = "サイトのURL";$xmlrpc_path = "/xmlrpc.php";$username = ユーザー名;$passwd = パスワード; $c = new XML_RPC_client($xmlrpc_path, $host, 80);$username = new XML_RPC_Value($username, string);$passwd = new XML_RPC_Value($passwd, string);$blog_id = new XML_RPC_Value(1, "string");$title = タイトル;$description = "本文";$content = new XML_RPC_Value( array( title => new XML_RPC_Value($title, string), description => new XML_RPC_Value($description, string) ),struct);$publish = new XML_RPC_Value(1, "boolean");$mymessage = new XML_RPC_Message( metaWeblog.newPost, array($blog_id, $username, $passwd, $content, $publish));$result = $c->send($mymessage); http://ounziw.com/2011/10/01/xmlrpc-phppear/
  26. 26. class Getbloginfo extends CI_Controller { public function index() { $this->load->library(xmlrpc); $this->xmlrpc->server(サーバーのアドレス); $this->xmlrpc->method(blogger.getUsersBlogs); $data = array( , ユーザ名, パスワード ); $this->xmlrpc->request($data); if ( ! $this->xmlrpc->send_request()) { echo $this->xmlrpc->display_error(); } print_r($this->xmlrpc->display_response()); } }http://ounziw.com/2011/10/12/codeigniter-xmlrpc/

×