web-dev-qa-db-ja.com

XML-RPCとpost_date

私はpost_dateをXML-RPCで設定しようとしていますが、XMLが正しくフォーマットされていないというエラーを出し続けます。コードは次のようになります。

$post = get_post( $post_id );

$response = $client->query( 
    'wp.editPost',
    array( 
        0, 
        $user, 
        $pw, 
        array( 
            'post_date' => $post->post_date 
        ) 
    ) 
);

私はwp.newPostで同じ問題にぶつかっています。私は日付がISO 8601にフォーマットされるべきであることを知っています、しかし、私はちょうどそれが正しくフォーマットされることに運がありません。

1
curtismchale

ここにいくつかの問題があります。まず第一に、wp.editPostはcontent structの前に4番目のパラメータを取ります - >編集しようとしている投稿のID(整数であるべきです)。

次に、post_dateの文字列を渡しているので、クライアントはこれをサーバーに送信する前に自動的に<string>タグに変換します。残念ながら、サーバーは<dateTime.iso8601>タグを期待しています。

これを修正するには、文字列dateを解析し、代わりにIXR_Dateクラスのインスタンスを渡します。クライアントはそれを適切に解析し、サーバーは適切に反応します。私は自分のサーバーで次のシナリオをテストしました。

$date = new IXR_Date( strtotime( $post->post_date ) );  // Parse the date to an IXR_Date object.

$response = $client->query( 
    'wp.editPost',
    array( 
        0, 
        $user, 
        $pwd,
        $post_id,
        array( 
            'post_date' => $date 
        ) 
    ) 
);
2
EAMann