WordPress.org

Make WordPress Core

Ticket #11049: 11049.diff

File 11049.diff, 2.7 KB (added by nacin, 8 years ago)

Different route, hook into get_metadata.

  • wp-includes/post.php

     
    26042604                $wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_ID ) ), $where );
    26052605
    26062606        $post = get_post($post_ID);
    2607 
    2608         if ( !empty($page_template) && 'page' == $data['post_type'] ) {
     2607 
     2608        if ( ! empty( $page_template ) && in_array( $data['post_type'], array( 'page', 'revision' ) ) ) {
    26092609                $post->page_template = $page_template;
    26102610                $page_templates = get_page_templates();
    2611                 if ( 'default' != $page_template && !in_array($page_template, $page_templates) ) {
     2611                if ( 'default' != $page_template && ! in_array( $page_template, $page_templates ) ) {
    26122612                        if ( $wp_error )
    2613                                 return new WP_Error('invalid_page_template', __('The page template is invalid.'));
     2613                                return new WP_Error( 'invalid_page_template', __( 'The page template is invalid.' ) );
    26142614                        else
    26152615                                return 0;
    26162616                }
    2617                 update_post_meta($post_ID, '_wp_page_template',  $page_template);
     2617                if ( 'page' == $data['post_type'] ) {
     2618                        update_post_meta( $post_ID, '_wp_page_template',  $page_template );
     2619                } elseif ( 'revision' == $data['post_type'] ) {
     2620                        // update the meta for autosave, page preview
     2621                        // sanity check, only allow this for pages
     2622                        $revision_parent = get_post( $post->post_parent );
     2623                        if ( 'page' == $revision_parent->post_type )
     2624                                update_metadata( 'post', $post_ID, '_wp_page_template',  $page_template );
     2625                }
    26182626        }
    26192627
    26202628        wp_transition_post_status($data['post_status'], $previous_status, $post);
     
    46314639        $return['post_date']     = isset($post['post_modified']) ? $post['post_modified'] : '';
    46324640        $return['post_date_gmt'] = isset($post['post_modified_gmt']) ? $post['post_modified_gmt'] : '';
    46334641
     4642        if ( $autosave && 'page' == $post['post_type'] )
     4643                $return['page_template'] = isset( $post['page_template'] ) ? $post['page_template'] : 'default';
     4644
    46344645        return $return;
    46354646}
    46364647
     
    49464957        return $revisions;
    49474958}
    49484959
     4960/**
     4961 * @access private
     4962 */
    49494963function _set_preview($post) {
    49504964
    49514965        if ( ! is_object($post) )
     
    49654979        return $post;
    49664980}
    49674981
     4982/**
     4983 * @access private
     4984 */
    49684985function _show_post_preview() {
    49694986
    49704987        if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) {
     
    49784995}
    49794996
    49804997/**
     4998 * @access private
     4999 */
     5000function _show_page_template_preview( $null, $post_id, $meta_key, $single ) {
     5001        if ( $meta_key != '_wp_page_template' || ! is_preview() || get_the_ID() != $post_id )
     5002                return;
     5003
     5004        $preview = wp_get_post_autosave( $post_id );
     5005        return get_post_meta( $preview->ID, '_wp_page_template', true );
     5006}
     5007
     5008/**
    49815009 * Returns the post's parent's post_ID
    49825010 *
    49835011 * @since 3.1.0