Título SEO: Cómo configurar post_date correctamente en WordPress usando XML-RPC

8 oct 2012, 02:26:50
Vistas: 1.64K
Votos: 1

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.

3
Comentarios

Oh, he estado ahí múltiples veces. Si está en las primeras 3 páginas de resultados de Google, lo he probado. Esa cadena exacta devuelve un problema de formato inválido.

curtismchale curtismchale
8 oct 2012 06:39:29

Supongo que simplemente te falta una , aquí: 'wp.editPost' array entre el Array y el método. Deberías activar tu entorno de depuración para detectar errores tipográficos y (aún mejor), usar un IDE decente.

kaiser kaiser
8 oct 2012 11:43:53
Todas las respuestas a la pregunta 1
1

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 
        ) 
    ) 
);
8 oct 2012 19:46:26
Comentarios

Ups, me perdí ese campo. En realidad sí lo tenía (o el otro contenido no se actualizaría cuando tenía la fecha comentada).

curtismchale curtismchale
9 oct 2012 00:21:45