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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2781閲覧

wordpress の xmlrpc.php を使った場合、https通信でうまく投稿されない件

ebsffzal

総合スコア107

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/11/19 02:59

編集2017/11/19 03:30

皆様

お世話になっております。

件名について、質問させていただきます。

とあるサーバから、phpのコマンドラインの実行で、
外部サーバにあるwordpressに対して、xmlrpc.phpを使って記事投稿をしています。

サーバ環境が変わる前はうまく動作していたのですが、以下、問題が発生しましたので、質問です。


■開発環境
一般的なLAMP環境

■確認できていること(試したこと)
1.サーバAからサーバBにあるwordpressへのxmlrpc.php経由での自動投稿
2.プログラム全体では動作していた(http通信で確認済み)
3.問題を切り分ける為に、サーバC(http通信)を用意して、自動投稿。結果OK。
4.サーバBのアカウントのパスワードにphp内での処理に影響しそうな記号類が使われていたので、簡易な文字列に変更。(結果NG)

■実現したいこと
サーバAからサーバBに対して、xmlrpc.phpを使って自動投稿を実現したい。

■補足
その他、考えられる原因として、サーバCを用意したのですが、そこは問題なく投稿できているので、あとはプロトコルの問題だけかと考えています。


以上になります。
同じような境遇にあった方や、有識者様のご意見をいただきたいと思います。
何卒どうぞよろしくお願い致します。

(追記)
実際の接続部分のソースコードを記載いたします。
抜粋になりますので、一部変数の部分はDBアクセス等した結果が入っています。

php

1 2//ライブラリ 3require_once("IXR_Library.php"); 4 5//初期設定 6$blog_url = 'https://xxxxxxxxxxxxxxxxxxxx/xmlrpc.php'; 7$user = 'aaaaaa'; 8$pass = 'bbbbbb'; 9 10//新規記事を自動投稿 11$client = new IXR_Client($blog_url); 12$status = $client->query( 13 "wp.newPost", // 使用する API 14 1, // ブログID(通常は1) 15 $user, // ユーザー 16 $pass, // パスワード 17 array( 18 'post_author' => $user, // 投稿者ID 19 'post_date' => $post_date, 20 'post_status' => 'publish', // 投稿状態(publish:公開、draft:下書き) 21 'post_title' => $rs_data["title"], // タイトル 22 'comment_status' => 'open', //コメントを有効にするかどうか 23 'post_content' => "", // 本文 24 'post_excerpt' => "", // 抜粋 25 'terms_names' => array( 26 'category' => $category, //カテゴリ 27 'post_tag' => $tag //タグ 28 ), 29 "custom_fields" => array( //カスタムフィールドを設定する 30 array("key" => "site_name", "value" => $rs_data["site_name"]), 31 array("key" => "image_url", "value" => $image_url_array["7"]), 32 ), 33 //'wp_post_thumbnail' => $img["id"] //アイキャッチを設定する 34 ) 35); 36 37//結果を取得 38$response = $client->getResponse(); 39$post_id = $response; 40

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

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

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

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

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

CHERRY

2017/11/19 03:26

サーバーAで、動かしているプログラムのソースコードの提示は可能でしょうか?(サーバーBへの投稿部分関係だけでOKです。)
ebsffzal

2017/11/19 03:27

CHERRY 様 ありがとうございます。接続部分のコードを記載させていただきます。
ebsffzal

2017/11/19 03:31

CHERRY 様 ソースを追記いたしました。
CHERRY

2017/11/19 04:12

問題が発生した時点で、どのようなメッセージが出ているでしょうか?
ebsffzal

2017/11/19 04:14

はい。出力されたログを確認しましたが、「$response」と「$post_id」は成功時は数値、失敗時にはNULLでした。
guest

回答1

0

ベストアンサー

根本的な問題解決ではないのですが、REST API での投稿も試す価値が有ると思います。

【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/post10274.html

投稿2017/11/27 08:40

kei344

総合スコア69398

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

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

ebsffzal

2019/02/19 03:02

上記のドキュメントをヒントに解決できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問