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

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

ただいまの
回答率

91.35%

  • WordPress

    4768questions

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

  • XML

    525questions

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

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

解決済

回答 4

投稿 2017/12/02 10:01 ・編集 2017/12/03 10:35

  • 評価
  • クリップ 0
  • VIEW 111

前提・実現したいこと

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

該当のソースコード

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

試したこと

【XAMPP環境】
IXR_Library.php を site_name Directory 直下に配置。

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

toukou.phpを編集

$id="●●●";
$pw="●●●";
$title="●●●";
$description='●●●';
~
array(array('categoryId'=>'●●●'), array('categoryId'=>'●●●')));



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

Wordpress 記事として反映。

発生している問題・エラーメッセージ

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+5

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

誤解がありそうです。

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

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

投稿 2017/12/02 10:27

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+5

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

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

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

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

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 12:57

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

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

例えば、

  1. ご提示のサンプルをタイトルや内容を自動で取得する仕組みを作って組み込む。
    例えば、amazonのAPIを使って特定のカテゴリーの商品情報のうち、最新の商品情報を取得するなど。
  2. XML-RPC経由での投稿プログラムをブラウザからでは無く、CLIで定期的に実行する(同時にブラウザからはアクセス出来ないところに配置する)

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

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

投稿 2017/12/02 10:32

編集 2017/12/02 10:35

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

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 23:18

編集 2017/12/03 23:20

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/03 23:33

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

    キャンセル

  • 2017/12/05 07:36

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

    キャンセル

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

ただいまの回答率

91.35%

関連した質問

同じタグがついた質問を見る

  • WordPress

    4768questions

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

  • XML

    525questions

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