WordPress.org

Make WordPress Core

Ticket #11049: 11049.2.diff

File 11049.2.diff, 2.9 KB (added by nacin, 9 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