XMLRPC: Add support for Feature Images to the new wp.xxxPost apis. See #18429 props maxcutler and markoheijen.

git-svn-id: http://svn.automattic.com/wordpress/trunk@20270 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
westi 2012-03-23 15:35:44 +00:00
parent 2c016a5a1c
commit 4d68261f5e
1 changed files with 43 additions and 0 deletions

View File

@ -577,6 +577,10 @@ class wp_xmlrpc_server extends IXR_Server {
'sticky' => ( $post['post_type'] === 'post' && is_sticky( $post['ID'] ) ),
);
//
$post_fields['featured_image'] = get_post_meta( $post['ID'], '_thumbnail_id', true );
$post_fields['featured_image_url'] = wp_get_attachment_url( $post_fields['featured_image'] );
// Consider future posts as published
if ( $post_fields['post_status'] === 'future' )
$post_fields['post_status'] = 'publish';
@ -644,6 +648,7 @@ class wp_xmlrpc_server extends IXR_Server {
* - comment_status - can be 'open' | 'closed'
* - ping_status - can be 'open' | 'closed'
* - sticky
* - featured_image - ID of a media item to use as the featured image
* - custom_fields - array, with each element containing 'key' and 'value'
* - terms - array, with taxonomy names as keys and arrays of term IDs as values
* - terms_names - array, with taxonomy names as keys and arrays of term names as values
@ -777,6 +782,18 @@ class wp_xmlrpc_server extends IXR_Server {
stick_post( $post_ID );
}
if ( isset ( $post_data['featured_image'] ) ) {
// empty value deletes, non-empty value adds/updates
if ( empty( $post_data['featured_image'] ) ) {
delete_post_thumbnail( $post_ID );
}
else {
if ( set_post_thumbnail( $post_ID, $post_data['featured_image'] ) === false )
return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
}
unset( $content_struct['featured_image'] );
}
if ( isset ( $post_data['custom_fields'] ) && post_type_supports( $post_data['post_type'], 'custom-fields' ) ) {
$this->set_custom_fields( $post_ID, $post_data['custom_fields'] );
}
@ -3329,6 +3346,7 @@ class wp_xmlrpc_server extends IXR_Server {
* - mt_allow_pings - can be 'open' or 'closed'
* - date_created_gmt
* - dateCreated
* - wp_featured_image
*
* @since 1.5.0
*
@ -3575,6 +3593,13 @@ class wp_xmlrpc_server extends IXR_Server {
if ( isset($content_struct['custom_fields']) )
$this->set_custom_fields($post_ID, $content_struct['custom_fields']);
if ( isset ( $post_data['wp_featured_image'] ) ) {
if ( set_post_thumbnail( $post_ID, $post_data['wp_featured_image'] ) === false )
return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
unset( $content_struct['wp_featured_image'] );
}
// Handle enclosures
$thisEnclosure = isset($content_struct['enclosure']) ? $content_struct['enclosure'] : null;
$this->add_enclosure_if_new($post_ID, $thisEnclosure);
@ -3875,6 +3900,18 @@ class wp_xmlrpc_server extends IXR_Server {
if ( isset($content_struct['custom_fields']) )
$this->set_custom_fields($post_ID, $content_struct['custom_fields']);
if ( isset ( $post_data['wp_featured_image'] ) ) {
// empty value deletes, non-empty value adds/updates
if ( empty( $post_data['wp_featured_image'] ) ) {
delete_post_thumbnail( $post_ID );
}
else {
if ( set_post_thumbnail( $post_ID, $post_data['wp_featured_image'] ) === false )
return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
}
unset( $content_struct['wp_featured_image'] );
}
// Handle enclosures
$thisEnclosure = isset($content_struct['enclosure']) ? $content_struct['enclosure'] : null;
$this->add_enclosure_if_new($post_ID, $thisEnclosure);
@ -4011,6 +4048,9 @@ class wp_xmlrpc_server extends IXR_Server {
if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure;
$resp['wp_featured_image'] = get_post_meta( $postdata['ID'], '_thumbnail_id', true );
$resp['wp_featured_image_url'] = wp_get_attachment_url( $resp['wp_featured_image'] );
return $resp;
} else {
return new IXR_Error(404, __('Sorry, no such post.'));
@ -4125,6 +4165,9 @@ class wp_xmlrpc_server extends IXR_Server {
'date_modified_gmt' => new IXR_Date( $post_modified_gmt )
);
$entry_index = count( $struct ) - 1;
$struct[ $entry_index ][ 'wp_featured_image' ] = get_post_meta( $entry['ID'], '_thumbnail_id', true );
$struct[ $entry_index ][ 'wp_featured_image_url' ] = wp_get_attachment_url( $struct[ $entry_index ][ 'wp_featured_image' ] );
}
$recent_posts = array();