web-dev-qa-db-fra.com

XML-RPC et post_date

J'essaie de définir le post_date via XML-RPC et continue à recevoir une erreur en disant que le XML n'est pas formaté correctement. Le code va quelque chose comme:

$post = get_post( $post_id );

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

J'ai le même problème avec wp.newPost. Je sais que la date doit être au format ISO8601, mais je n’ai aucune chance de l’avoir correctement formatée.

1
curtismchale

Il y a quelques problèmes ici. Tout d'abord, wp.editPost prend un quatrième paramètre avant la structure de contenu -> l'ID de la publication que vous essayez de modifier (il doit s'agir d'un entier).

Deuxièmement, vous transmettez une chaîne pour le post_date. Le client la convertit automatiquement en une balise <string> avant de l'envoyer au serveur ... malheureusement, le serveur attend une balise <dateTime.iso8601>.

Vous pouvez résoudre ce problème en analysant la chaîne date et en transmettant à la place une instance de la classe IXR_Date. Le client l'analysera correctement et le serveur réagira de manière appropriée. J'ai testé le scénario suivant sur mon propre serveur:

$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