XML-RPC e post_date
Sto cercando di impostare il post_date via XML-RPC ma continuo a ricevere un errore che dice che l'XML non è formattato correttamente. Il codice è qualcosa del genere:
$post = get_post( $post_id );
$response = $client->query(
'wp.editPost',
array(
0,
$user,
$pw,
array(
'post_date' => $post->post_date
)
)
);
Ho lo stesso problema con wp.newPost
. So che la data dovrebbe essere formattata in ISO8601 ma non riesco a formattarla correttamente.
Ci sono un paio di problemi qui. Prima di tutto, wp.editPost
accetta un quarto parametro prima della struttura del contenuto -> l'ID del post che si sta cercando di modificare (dovrebbe essere un intero).
Secondo, stai passando una stringa per post_date
, quindi il client la converte automaticamente in un tag <string>
prima di inviarla al server... sfortunatamente, il server si aspetta un tag <dateTime.iso8601>
.
Puoi risolvere questo problema analizzando la data come stringa e passando un'istanza della classe IXR_Date
invece. Il client la analizzerà correttamente e il server reagirà in modo appropriato. Ho testato il seguente scenario sul mio server:
$date = new IXR_Date( strtotime( $post->post_date ) ); // Analizza la data in un oggetto IXR_Date.
$response = $client->query(
'wp.editPost',
array(
0,
$user,
$pwd,
$post_id,
array(
'post_date' => $date
)
)
);
