質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

4回答

7600閲覧

XML-RPC 実際どうやって使うのか?

vitabrevisarsl1

総合スコア57

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/12/02 01:01

編集2017/12/03 01:35

###前提・実現したいこと
「WordPressでは、XML-RPCを利用することでエントリーの投稿、取得、カテゴリの作成、編集などをブラウザで管理画面にログインすることなく出来ます。」等の説明がたくさんあります。
しかし、具体的にそれをどう使うものなのか、検索のほか書籍にも当たりましたが、最初の入口が把握できません。

###該当のソースコード

php

1/* toukou.php */ 2<?php 3include_once("IXR_Library.php"); 4$client=new IXR_Client("http://localhost:8080/site_name/xmlrpc.php?rsd"); 5$id="●●●"; 6$pw="1234"; 7$title="タイトル25"; 8$description='本文です25 9悪意のある者は、影のように背後から忍び込んでくるゆえ、知らぬうちにしてやられるのに加え、やられた事実も認識すらできずにいるケースも多々存在する。セキュリティ対策として暗号化不実施が今回の漏洩事案の問題点である。'; 10$postDate=new IXR_Date(time() + 60 * 60); /* 即時公開 */ 11$status=$client->query('metaWeblog.newPost', '', $id, $pw, 12 array('title' => $title, 'description' => $description, 'dateCreated' => $postDate, 13 'mt_allow_comments' => '1', 'mt_allow_pings' => '0', 'mt_convert_breaks' => '1', 14 'mt_text_more' => '追記テキスト'), 1); /* 0:下書き 1:公開 2:予約投稿 */ 15if($status){ 16 $post_id=$client->getResponse(); 17 $status=$client->query('mt.setPostCategories', 18 $post_id, $id, $pw, array(array('categoryId'=>'13'), array('categoryId'=>'54'))); /* 地域と国 */ 19} 20?>

###試したこと
【XAMPP環境】
IXR_Library.php を site_name Directory 直下に配置。

同ディレクトリにtoukou.php配置。

toukou.phpを編集

php

1$id="●●●"; 2$pw="●●●"; 3$title="●●●"; 4$description='●●●'; 5~ 6array(array('categoryId'=>'●●●'), array('categoryId'=>'●●●')));


ブラウザにて、http://localhost:8080/site_name/toukou.php を更新。

Wordpress 記事として反映。

###発生している問題・エラーメッセージ
あるサイトを参考に上記試行しました。phpにパスワードを書いているのでログイン無しで投稿してることにはなるのでしょうけれど、投稿者がphpファイル内にタイトルや本文を記載するあたりや、ブラウザを投稿の都度更新するあたり、実用性に欠けます。こういうやり方で使用するものなのか疑問です。

WordPressで作成したサイトにXML-RPCを使ってログインすること無く記事を投稿するという際に、使用できるツールや手順について、ご教授いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

投稿者がphpファイル内にタイトルや本文を記載するあたりや、ブラウザを投稿の都度更新するあたり、実用性に欠けます。

例文だからわかりやすくタイトルや本文をPHPファイル内に記載しているだけです。
下記はPHPのmail関数の例文ですが、メールアドレスや本文をPHPファイル内に記載しています。それをもって「mail関数は実用性に欠ける」とは言わないと思います。

【PHP: mail - Manual】
http://php.net/manual/ja/function.mail.php#refsect1-function.mail-examples

PHP

1<?php 2$to = 'nobody@example.com'; 3$subject = 'the subject'; 4$message = 'hello'; 5$headers = 'From: webmaster@example.com' . "\r\n" . 6 'Reply-To: webmaster@example.com' . "\r\n" . 7 'X-Mailer: PHP/' . phpversion(); 8 9mail($to, $subject, $message, $headers); 10?>

XML-RPCはXMLを使ったデータのやり取りのためのプロトコルです。ネットワーク上にあるサーバからサーバにデータを渡す際に使います。送受信に使用する言語はPHPで無くてもJAVAでもRubyでもHTTP通信が出来れば何でも良いです。

例えば業務システム内で入力された日報を公式サイトで公開するとか、ECシステムでアイテムを登録すると店長ブログに「●●を公開しました」というような記事を公開するとか、システム内部で使用することが多いです。

ただ、XML-RPCは暗号化されていない平文のパスワードを使用するので、注意が必要です。そこを改善したAtomプロトコル(AtomPP)が昔はWordPressでも使えたのですが、現在はコアから外されています。(確かプラグインとして外部化されたはずだがちょっと見つからない)

【3章 Atom出版プロトコル - The Atom Publishing Protocol(AtomAPI)】
http://www.witha.jp/Atom/Chapter-3_The_Atom_Publishing_Protocol_or_AtomAPI.html#Atom3-4-2


現在外部からの投稿については WP REST API を使用する流れになっています。XML-RPCも使用できますがAtomPPのようにコアから外れる可能性もあります。

※ ベータバージョンをプラグインとして公開 ⇒ コアに組み込みという手順を踏んだため、解説サイトによっては「プラグインを導入します」となっていることがあります。

【WP REST API v2 Documentation】
http://ja.wp-api.org/

【WordPress REST API で、カスタム投稿タイプなどの情報を取得する | Tips Note by TAM】
https://www.tam-tam.co.jp/tipsnote/cms/post9688.html

【WP REST APIでの情報の取得と表示・使い道について | ソフプラント】
https://www.sofplant.com/blog/tech/wp-rest-api-tips/

投稿2017/12/03 03:57

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

実用性に欠けます。
こういうやり方で使用するものなのか疑問です。

誤解がありそうです。

XML-RPCを使うと、違うサーバから通信できます。
また、PHPなどで投稿画面を作っても別にいいわけです。

ですから、実用的に使うシーンでは、
たとえば、WordPressの管理画面ではなく、
より編集しやすいブログエディタで書いたものを、
XML-RPCを通じて投稿する、といったことが実現できます。
そういうエディタが現にあるわけです。

投稿2017/12/02 01:27

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ブラウザから管理画面を使って投稿する必要がなくなるので、
何らかの方法で情報を集めて投稿を自動化する
ような用途で使えるのかなと思います。

例えば、

  1. ご提示のサンプルをタイトルや内容を自動で取得する仕組みを作って組み込む。

例えば、amazonのAPIを使って特定のカテゴリーの商品情報のうち、最新の商品情報を取得するなど。
2. XML-RPC経由での投稿プログラムをブラウザからでは無く、CLIで定期的に実行する(同時にブラウザからはアクセス出来ないところに配置する)

という感じにすれば、アフィリエイトサイトの雛形となる投稿は作れそうです。

他には、複数のブログを一つのインターフェイスから同時に更新したりといった用途のサービスがあったと思います。

投稿2017/12/02 01:32

編集2017/12/02 01:35
tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

ご回答いただいた方々ありがとうございます。
数日検証を重ねました(kei344様ご教示のWP REST APIは、平文パスワード対策を有するとのことでしたが、未検証のプラグインということもあり、当方の環境への導入が難しいため、参考にさせていただきました)。

[入力]->[ログイン連携]->[当該サイトで投稿]
XML-RPCが、SNSのいいねボタンのように、いわば異種コンテンツ間でログインをリンクさせる働きをする。
投稿時のインターフェイスはphpでもrubyでもexcelでも作成して構わず、投稿者は一般にブラウザに表示される各入力欄にタイトル・記事・カテゴリを入力して投稿することもあれば、excel等のアプリケーションにある各入力欄にタイトル・記事・カテゴリを入力して投稿することもある。
概ね以上のように考えます。

 ところで、例えばScribeFireでも、アカウントを登録しておいて投稿ボタンを押すと、提示のtoukou.phpと同じことをしてくれますが、ScribeFireでは階層カテゴリも読み込んでくれるため、投稿者はチェックボックスを選択します。
仮に提示のphpをブラウザを介して投稿させるものにする場合、更にプルダウンカテゴリ選択を盛り込む必要があると思います。

 はて、ScribeFire や WindowsLiveWriter と同じことをしようとしていて、自分の作成したphpにカテゴリ選択機能がないのでは意味が無いのではないか? XML-RPCを使うという際にはいつもこのように過不足無き様にあれもこれも考慮するものなのか? よく見かけるアプリのように入力ボタンがあってOKボタンがあって、という形を想像していたが、そもそもこれが間違っていないか? 今、ScribeFire やWindowsLiveWriter を使わず敢えて XML-RPC でアクセスするのはなんのためなのか? 。。課題を出した人が職場にいるので、聴いてみないとわかりませんが、エンジニアに限りませんが、そんな(わかりきった・考えればわかる)こと聞くなよ、あんた本当に○○やってたの?、という、あまり気軽に質問できない空気が日本の職場を覆っているようです。

 時間が経過してしまったため、放置と一線を画すため、一旦閉じます。ご回答を何度も読ませていただきましたが、なんと切り出すべきか思い浮かばず、書けませんでした。爾後同じ質問を避けるため、再読し、後日になってしまいますが、納得できた答えを追記致します。

投稿2017/12/03 14:18

編集2017/12/03 14:20
vitabrevisarsl1

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/12/03 14:33

「どういうことをしようとして」「その中で何がわからないのか」を具体的に質問されたほうが問題が解決しやすいと思います。ブラウザを使用するならXML-RPCを使わずにWordPressのログインシステムで行うほうが自然ですし、そうしない理由が無いのならXML-RPCは使わなくても良いと思います。
vitabrevisarsl1

2017/12/04 22:36

(「ブラウザを使用するならXML-RPCを使わずにWordPressのログインシステムで行うほうが自然」 >> そうですよね。心底そう思います。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問