Título SEO: Cómo configurar post_date correctamente en WordPress usando XML-RPC
Estoy intentando establecer el post_date mediante XML-RPC y sigo recibiendo un error que dice que el XML no está formateado correctamente. El código es algo así:
$post = get_post( $post_id );
$response = $client->query(
'wp.editPost',
array(
0,
$user,
$pw,
array(
'post_date' => $post->post_date
)
)
);
Tengo el mismo problema con wp.newPost
. Sé que la fecha debería estar formateada en ISO8601 pero no tengo suerte para formatearla correctamente.

Hay un par de problemas aquí. En primer lugar, wp.editPost
recibe un cuarto parámetro antes de la estructura de contenido -> el ID de la publicación que intentas editar (debería ser un entero).
En segundo lugar, estás pasando una cadena para post_date
, por lo que el cliente la convierte automáticamente en una etiqueta <string>
antes de enviarla al servidor... desafortunadamente, el servidor espera una etiqueta <dateTime.iso8601>
.
Puedes solucionar esto analizando la cadena de fecha y pasando una instancia de la clase IXR_Date
en su lugar. El cliente la analizará correctamente y el servidor reaccionará adecuadamente. He probado el siguiente escenario en mi propio servidor:
$date = new IXR_Date( strtotime( $post->post_date ) ); // Analizar la fecha a un objeto IXR_Date.
$response = $client->query(
'wp.editPost',
array(
0,
$user,
$pwd,
$post_id,
array(
'post_date' => $date
)
)
);
