WordPress.org

Make WordPress Core

Ticket #15098: featured_image_xmlrpc.patch

File featured_image_xmlrpc.patch, 2.7 KB (added by cfinke, 7 years ago)

Adds support for featured_image field in XML-RPC.

  • wp-includes/class-wp-xmlrpc-server.php

     
    15961596                        'caption'                               => $attachment->post_excerpt,
    15971597                        'description'                   => $attachment->post_content,
    15981598                        'metadata'                              => wp_get_attachment_metadata($attachment->ID),
     1599                        'id'                                    => $attachment->ID,
    15991600                );
    16001601
    16011602                return $attachment_struct;
     
    21572158         *  - wp_page_parent_id
    21582159         *  - wp_page_order
    21592160         *  - wp_author_id
     2161         *  - wp_featured_image
    21602162         *  - post_status | page_status - can be 'draft', 'private', 'publish', or 'pending'
    21612163         *  - mt_allow_comments - can be 'open' or 'closed'
    21622164         *  - mt_allow_pings - can be 'open' or 'closed'
     
    24152417                if ( isset($content_struct['custom_fields']) )
    24162418                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']);
    24172419
     2420                if ( isset($content_struct['wp_featured_image']) && $content_struct['wp_featured_image'] )
     2421                        update_post_meta($post_ID, "_thumbnail_id", $content_struct['wp_featured_image']);
     2422
    24182423                // Handle enclosures
    24192424                $thisEnclosure = isset($content_struct['enclosure']) ? $content_struct['enclosure'] : null;
    24202425                $this->add_enclosure_if_new($post_ID, $thisEnclosure);
     
    27282733                                unstick_post( $post_ID );
    27292734                }
    27302735
     2736                if ( isset($content_struct['wp_featured_image']) && $content_struct['wp_featured_image'] ) {
     2737                        update_post_meta($post_ID, "_thumbnail_id", $content_struct['wp_featured_image']);
     2738                }
     2739                else {
     2740                        delete_post_meta($post_ID, "_thumbnail_id", "");
     2741                }
     2742
    27312743                if ( isset($content_struct['custom_fields']) )
    27322744                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']);
    27332745
     
    28602872
    28612873                        if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure;
    28622874
     2875                        foreach ( $resp['custom_fields'] as $custom_field ) {
     2876                                if ( $custom_field["key"] == '_thumbnail_id' ) {
     2877                                        if ( $imageurl = wp_get_attachment_url($custom_field['value']) ) {
     2878                                                $resp['wp_featured_image'] = array( 'id' => $custom_field['value'], 'url' => $imageurl );
     2879                                        }
     2880                                }
     2881                        }
     2882
    28632883                        return $resp;
    28642884                } else {
    28652885                        return new IXR_Error(404, __('Sorry, no such post.'));
     
    29672987                                'wp_post_format' => $post_format
    29682988                        );
    29692989
     2990                        $entry_index = count($struct) - 1;
     2991
     2992                        foreach ( $struct[$entry_index]['custom_fields'] as $custom_field ) {
     2993                                if ( $custom_field['key'] == '_thumbnail_id' ) {
     2994                                        if ( $imageurl = wp_get_attachment_url($custom_field['value']) ) {
     2995                                                $struct[$entry_index]['wp_featured_image'] = array( 'id' => $custom_field['value'], 'url' => $imageurl );
     2996                                        }
     2997                                }
     2998                        }
    29702999                }
    29713000
    29723001                $recent_posts = array();