WordPress.org

Make WordPress Core

Ticket #11049: 11049.2.diff

File 11049.2.diff, 2.9 KB (added by nacin, 3 years ago)
  • wp-includes/post.php

     
    26052605 
    26062606        $post = get_post($post_ID); 
    26072607 
    2608         if ( !empty($page_template) && 'page' == $data['post_type'] ) { 
     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']) ) { 
     
    49734990                if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) ) 
    49744991                        wp_die( __('You do not have permission to preview drafts.') ); 
    49754992 
    4976                 add_filter('the_preview', '_set_preview'); 
     4993                add_filter( 'the_preview', '_set_preview' ); 
     4994                add_filter( 'get_post_metadata', '_show_page_template_preview', 10, 4 ); 
    49774995        } 
    49784996} 
    49794997 
    49804998/** 
     4999 * @access private 
     5000 */ 
     5001function _show_page_template_preview( $null, $post_id, $meta_key, $single ) { 
     5002        if ( $meta_key != '_wp_page_template' || ! is_preview() || get_the_ID() != $post_id ) 
     5003                return $null; 
     5004 
     5005        $preview = wp_get_post_autosave( $post_id ); 
     5006        return get_post_meta( $preview->ID, '_wp_page_template', $single ); 
     5007} 
     5008 
     5009/** 
    49815010 * Returns the post's parent's post_ID 
    49825011 * 
    49835012 * @since 3.1.0