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

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

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

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

Q&A

解決済

1回答

3166閲覧

wp XMLRPC 予約投稿時間について

efu_akio

総合スコア37

WordPress

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

0グッド

0クリップ

投稿2016/11/25 01:54

編集2016/11/25 07:56

XMLRPCで以下の実行をした際に投稿はできるのですが
予約時刻に問題があり困っております

PHP

1include_once('IXR_Library.php'); 2date_default_timezone_set('Asia/Tokyo'); 3$client = new IXR_Client("http://サイトURL/xmlrpc.php"); 4$wp_username = 'name'; 5$wp_password = 'pass'; 6$postdate = '2016-11-25T10:00:11+09:00';//2016年11月25日10時5分11秒(+9:00で日本時間にしています) 7$status = $client->query( 8 "wp.newPost", 9 1, 10 $wp_username, // ユーザー名 11 $wp_password, // パスワード 12 array( 13 'post_author' => 1, 14 'post_status' => 'publish', 15 'post_title' => 'タイトル', 16 'post_content' => '投稿本文' , 17 'post_date' => $postdate, 18 'terms_names' => array( 19 'category' => array('カテゴリーテスト'), 20 'post_tag' => array('タグ1','タグ2')), 21 ) 22);

【問題点】
①ワードプレスに予約投稿すると投稿一覧画面で稿後すぐに確認したところ公開日時は2015年11月25日10時5分と表示されていますが9時間前に既に公開になってしまいます。
記事の更新をかけると正常に2015年11月25日10時5分で予約されその時間が来ると公開になります。

②上記のコードのまま予約時間を現在時間から9時間以上先に設定した場合は管理画面の表示は9時間足さない日本時間が表示されていますがUTC時間に公開の更新が自動で掛かり「予約投稿失敗」となります。

※WPの設定タイムゾーンは「東京」です。
GMT、UTCなども試しましたがおそらく日付の指定そのものが間違っていると思うのですが行き詰っております
どなたかご教授いただけませんでしょうか

宜しくお願いいたします。

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

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

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

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

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

kei344

2016/11/25 02:20

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
efu_akio

2016/11/25 07:57

ご連絡、ご指導ありがとうございます。コードは括るんですね、失礼いたしました。
guest

回答1

0

ベストアンサー

XML-RPCの投稿日時はタイムゾーンを無視します。
仕様の原本がどこかにあったと思うのですが、とりあえずそれに言及している記事です。

【HepCat Dev and Test: XML-RPCの投稿日時】
http://www.witha.jp/blog/archives/000086.html

日付のタイムゾーンの指定が仕様で明示的に禁止されている


昔作ったXML-RPCのコードに下記のようなコメントが殴り書かれていました。WP3.0以前な気がするので、仕様が変わっている可能性もありますが、'20001020T20:20:20Z' のような表記で試してみてください。

'2000-10-20T20:20:20Z'⇒MT可。WP不可。

'20001020T20:20:20Z'⇒MT,WP可
⇒日本時間にする時は-9時間する必要がある。つまり、現在時間+9時間をDBに投げ込むことになる。


追記:

予約投稿だったら 'post_status' => 'future' ですね。

【WordPressへXML-RPCとPHPで外部投稿(実用編) – 猫力】
http://nekoriki.net/45

PHP

1$postDate = new IXR_Date(time() + 60 * 60); //例:1時間先 2// 省略... 3'post_date' => $postDate, //または、post_date_gmt 4'post_status' => 'future',

投稿2016/11/25 08:17

編集2016/11/25 08:33
kei344

総合スコア69398

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

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

efu_akio

2016/11/25 23:16

ご連絡ありがとうございます 時間の指定方法間違っていたのですね。 変更したもので予約投稿したところ表示時間は日本時間のままで問題ないのですがやはり9時間前に公開されていることになってしまいます。 WP管理画面から更新すると正しく時間が判断されるようで「予約済」になります。 記事の更新をしないと時刻の反映がされないのでWPの設定の問題なのかもしれません プラグインは何も入れていない新しいWPを導入してテストしましたが同じ現象でした レンタルサーバーは「カゴヤ」です。 カゴヤにも聞いてみようと思います。 ありがとうございます。
efu_akio

2016/11/25 23:58 編集

続きになります $postdate = '20001020T20:20:20Z'; ではうまくできなかったのですが $postdate = new IXR_Date('20161125T23:54:48Z'); でうまくいきました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問