SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
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 特有の機能もあります
ブログ投稿ツール Blogilo

● MetaWeblogAPI 対応のブログに投稿可能
  ○ http://www.xmlrpc.com/metaWeblogApi
  ○ MetaWeblogAPI を利用dるツール
    ■ Blogger, Movable Type 等
ブログ投稿ツール Blogilo

● http://blogilo.gnufolks.org/
● GNU GPL v2
● Bilbo -> Blogilo (商標問題で改名)

 ● 日本語化への参加
https://translations.launchpad.
net/ubuntu/natty/+source/kdepim/+pots/blogil
o/ja/+translate
Blogilo をインストール

● ソースコードの入手
git clone --depth 1 git://anongit.kde.org/kdepim

開発ログも取得する場合は
git clone git://anongit.kde.org/kdepim


● Ubuntu の場合
  ○ Synaptic パッケージマネージャで検索
実際に使ってみる

● 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

● フレームワークを使う
  ○ codeigniter.jp/user_guide_ja/libraries/xmlrpc.html
$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
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/
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/

Mais conteúdo relacionado

Mais procurados

Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!Tsuji Yuko
 
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりましたジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりましたYukiya Hayashi
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―shinjiigarashi
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?naoki koyama
 
Lexique decrire un objet- un paysage (A2)
Lexique  decrire un objet- un paysage (A2)Lexique  decrire un objet- un paysage (A2)
Lexique decrire un objet- un paysage (A2)lebaobabbleu
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠Sho Okada
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶdcubeio
 
Livre parascolaire français-6 ème année primaire
Livre parascolaire français-6 ème année primaireLivre parascolaire français-6 ème année primaire
Livre parascolaire français-6 ème année primaireEttaoufik Elayedi
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
Les rapports temporels (B2)
Les rapports temporels (B2)Les rapports temporels (B2)
Les rapports temporels (B2)lebaobabbleu
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようShuto Suzuki
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話yaegashi
 
Unité didactique 4- les médias et vous
Unité didactique 4- les médias et vousUnité didactique 4- les médias et vous
Unité didactique 4- les médias et vouslebaobabbleu
 
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Makoto Nishimura
 
éValuation lecture des prérequis ecture comp .4eme
éValuation lecture des prérequis ecture comp .4emeéValuation lecture des prérequis ecture comp .4eme
éValuation lecture des prérequis ecture comp .4emebenamor belgacem
 
La politique française
La politique françaiseLa politique française
La politique françaiselebaobabbleu
 
ADVERBES - PRÉPOSITIONS
ADVERBES - PRÉPOSITIONSADVERBES - PRÉPOSITIONS
ADVERBES - PRÉPOSITIONSjoscartome
 

Mais procurados (20)

Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
Qiita Engineer Summit 2021 LT 食べログでフロントエンドのリプレースやっていってます!
 
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりましたジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
 
Lexique decrire un objet- un paysage (A2)
Lexique  decrire un objet- un paysage (A2)Lexique  decrire un objet- un paysage (A2)
Lexique decrire un objet- un paysage (A2)
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
Livre parascolaire français-6 ème année primaire
Livre parascolaire français-6 ème année primaireLivre parascolaire français-6 ème année primaire
Livre parascolaire français-6 ème année primaire
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
Les rapports temporels (B2)
Les rapports temporels (B2)Les rapports temporels (B2)
Les rapports temporels (B2)
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
 
Unité didactique 4- les médias et vous
Unité didactique 4- les médias et vousUnité didactique 4- les médias et vous
Unité didactique 4- les médias et vous
 
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Uwpアプリケーション開発入門
Uwpアプリケーション開発入門
 
éValuation lecture des prérequis ecture comp .4eme
éValuation lecture des prérequis ecture comp .4emeéValuation lecture des prérequis ecture comp .4eme
éValuation lecture des prérequis ecture comp .4eme
 
La politique française
La politique françaiseLa politique française
La politique française
 
ADVERBES - PRÉPOSITIONS
ADVERBES - PRÉPOSITIONSADVERBES - PRÉPOSITIONS
ADVERBES - PRÉPOSITIONS
 

Semelhante a Xml rpc を使ってブログ投稿

20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminarSix Apart
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn SeminarSix Apart
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」ericsagnes
 
Word Press on Movable Type
Word Press on Movable TypeWord Press on Movable Type
Word Press on Movable TypeHajime Fujimoto
 
20141206 handson
20141206 handson20141206 handson
20141206 handsonSix Apart
 
Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922Toshihiro Takehara
 
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶLingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶKenichiro MATOHARA
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibananinomy
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうTakahiro Kambe
 
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。Kazuki Akiyama
 
20141101 handson
20141101 handson20141101 handson
20141101 handsonSix Apart
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてTakahiro Kambe
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎真哉 杉野
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトTakuma Nishiyama
 
第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介foom_in
 
パララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトパララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトTakuma Nishiyama
 

Semelhante a Xml rpc を使ってブログ投稿 (20)

Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
Word Press on Movable Type
Word Press on Movable TypeWord Press on Movable Type
Word Press on Movable Type
 
Drupal補完計画
Drupal補完計画Drupal補完計画
Drupal補完計画
 
20141206 handson
20141206 handson20141206 handson
20141206 handson
 
Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922Xoopsサイト制作セミナー 20120922
Xoopsサイト制作セミナー 20120922
 
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶLingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
 
Symfony2#5 LT
Symfony2#5 LTSymfony2#5 LT
Symfony2#5 LT
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibana
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
 
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
【Wordpress】LightBox風jQueryを使ってポップアップ上でカスタムフィールドを出力。
 
20141101 handson
20141101 handson20141101 handson
20141101 handson
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えて
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
Wp html5
Wp html5Wp html5
Wp html5
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
 
第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介
 
パララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトパララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイト
 

Xml rpc を使ってブログ投稿