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
. Я знаю, что дата должна быть в формате ISO8601, но никак не могу правильно её отформатировать.
Здесь есть пара проблем. Во-первых, wp.editPost
принимает четвертый параметр перед структурой контента — ID записи, которую вы пытаетесь отредактировать (должно быть целым числом).
Во-вторых, вы передаете строку для post_date
, поэтому клиент автоматически преобразует ее в тег <string>
перед отправкой на сервер... к сожалению, сервер ожидает тег <dateTime.iso8601>
.
Вы можете исправить это, разобрав строку с датой и передав экземпляр класса IXR_Date
вместо строки. Клиент обработает его правильно, и сервер отреагирует соответствующим образом. Я протестировал следующий сценарий на своем сервере:
$date = new IXR_Date( strtotime( $post->post_date ) ); // Преобразуем дату в объект IXR_Date.
$response = $client->query(
'wp.editPost',
array(
0,
$user,
$pwd,
$post_id,
array(
'post_date' => $date
)
)
);
