質問: $client->query( "wp.newPost", 1, $wp_username, // ユーザー名 $wp_password, // パスワード array( 'post_author' => 1, 'post_status' => 'publish', 'post_title' => 'タイトル', 'post_content' => '投稿本文' , 'post_date' => $postdate, 'terms_names' => array( 'category' => array('カテゴリーテスト'), 'post_tag' => array('タグ1','タグ2')), ) ); ``` 【問題点】 1ワードプレスに予約投稿すると投稿一覧画面で稿後すぐに確認したところ公開日時は2015年11月25日10時5分と表示されていますが9時間前に既に公開になってしまいます。 記事の更新をかけると正常に2015年11月25日10時5分で予約されその時間が来ると公開になります。 2上記のコードのまま予約時間を現在時間から9時間以上先に設定した場合は管理画面の表示は9時間足さない日本時間が表示されていますがUTC時間に公開の更新が自動で掛かり「予約投稿失敗」となります。 ※WPの設定タイムゾーンは「東京」です。 GMT、UTCなども試しましたがおそらく日付の指定そのものが間違っていると思うのですが行き詰っております どなたかご教授いただけませんでしょうか 宜しくお願いいたします。
回答: XML-RPCの投稿日時はタイムゾーンを無視します。 仕様の原本がどこかにあったと思うのですが、とりあえずそれに言及している記事です。 【HepCat Dev and Test: XML-RPCの投稿日時】 > > 日付のタイムゾーンの指定が仕様で明示的に禁止されている > > > 昔作った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で外部投稿(実用編) – 猫力】 > > > ``` > $postDate = new IXR_Date(time() + 60 * 60); //例:1時間先 > // 省略... > 'post_date' => $postDate, //または、post_date_gmt > 'post_status' => 'future', > ``` > >