Make WordPress Core

Ticket #24345: preview.diff

File preview.diff, 10.9 KB (added by TomHarrigan, 11 years ago)

First pass at get_preview_post_link() function and consolidating 'preview_post_link' filter to single location.

  • wp-admin/edit-form-advanced.php

     
    7171         5 => isset($_GET['revision']) ? sprintf( __('Post restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    7272         6 => sprintf( __('Post published. <a href="%s">View post</a>'), esc_url( get_permalink($post_ID) ) ),
    7373         7 => __('Post saved.'),
    74          8 => sprintf( __('Post submitted. <a target="_blank" href="%s">Preview post</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
     74         8 => sprintf( __('Post submitted. <a target="_blank" href="%s">Preview post</a>'), esc_url( get_preview_post_link( $post_ID ) ) ),
    7575         9 => sprintf( __('Post scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview post</a>'),
    7676                /* translators: Publish box date format, see http://php.net/date */
    7777                date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    78         10 => sprintf( __('Post draft updated. <a target="_blank" href="%s">Preview post</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
     78        10 => sprintf( __('Post draft updated. <a target="_blank" href="%s">Preview post</a>'), esc_url( get_preview_post_link( $post_ID ) ) ),
    7979);
    8080$messages['page'] = array(
    8181         0 => '', // Unused. Messages start at index 1.
     
    8686         5 => isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    8787         6 => sprintf( __('Page published. <a href="%s">View page</a>'), esc_url( get_permalink($post_ID) ) ),
    8888         7 => __('Page saved.'),
    89          8 => sprintf( __('Page submitted. <a target="_blank" href="%s">Preview page</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
     89         8 => sprintf( __('Page submitted. <a target="_blank" href="%s">Preview page</a>'), esc_url( get_preview_post_link( $post_ID ) ) ),
    9090         9 => sprintf( __('Page scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview page</a>'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    91         10 => sprintf( __('Page draft updated. <a target="_blank" href="%s">Preview page</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
     91        10 => sprintf( __('Page draft updated. <a target="_blank" href="%s">Preview page</a>'), esc_url( get_preview_post_link( $post_ID ) ) ),
    9292);
    9393$messages['attachment'] = array_fill( 1, 10, __( 'Media attachment updated.' ) ); // Hack, for now.
    9494
  • wp-admin/includes/ajax-actions.php

     
    14691469function wp_ajax_get_permalink() {
    14701470        check_ajax_referer( 'getpermalink', 'getpermalinknonce' );
    14711471        $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
    1472         wp_die( add_query_arg( array( 'preview' => 'true' ), get_permalink( $post_id ) ) );
     1472        wp_die( get_preview_post_link( $post_id ) );
    14731473}
    14741474
    14751475/**
  • wp-admin/includes/class-wp-posts-list-table.php

     
    678678                                if ( $post_type_object->public ) {
    679679                                        if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
    680680                                                if ( $can_edit_post ) {
    681                                                         $preview_link = set_url_scheme( get_permalink( $post->ID ) );
    682                                                         /** This filter is documented in wp-admin/includes/meta-boxes.php */
    683                                                         $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
     681                                                        $preview_link = get_preview_post_link( $post->ID );
    684682                                                        $actions['view'] = '<a href="' . esc_url( $preview_link ) . '" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'Preview' ) . '</a>';
    685683                                                }
    686684                                        } elseif ( 'trash' != $post->post_status ) {
  • wp-admin/includes/meta-boxes.php

     
    3838<div id="preview-action">
    3939<?php
    4040if ( 'publish' == $post->post_status ) {
    41         $preview_link = esc_url( get_permalink( $post->ID ) );
     41        $preview_link = esc_url( get_preview_post_link( $post->ID, false ) );
    4242        $preview_button = __( 'Preview Changes' );
    4343} else {
    44         $preview_link = set_url_scheme( get_permalink( $post->ID ) );
    45 
    46         /**
    47          * Filter the URI of a post preview in the post submit box.
    48          *
    49          * @since 2.0.5
    50          * @since 4.0.0 $post parameter was added.
    51          *
    52          * @param string  $preview_link URI the user will be directed to for a post preview.
    53          * @param WP_Post $post         Post object.
    54          */
    55         $preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post ) );
     44        $preview_link = esc_url( get_preview_post_link( $post->ID ) );
    5645        $preview_button = __( 'Preview' );
    5746}
    5847?>
  • wp-admin/includes/post.php

     
    12251225
    12261226        if ( isset( $view_post ) ) {
    12271227                if( 'draft' == $post->post_status ) {
    1228                         $preview_link = set_url_scheme( get_permalink( $post->ID ) );
    1229                         /** This filter is documented in wp-admin/includes/meta-boxes.php */
    1230                         $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
     1228                        $preview_link = get_preview_post_link( $post->ID );
    12311229                        $return .= "<span id='view-post-btn'><a href='" . esc_url( $preview_link ) . "' class='button button-small' target='wp-preview-{$post->ID}'>$view_post</a></span>\n";
    12321230                } else {
    12331231                        $return .= "<span id='view-post-btn'><a href='" . get_permalink( $post ) . "' class='button button-small'>$view_post</a></span>\n";
     
    13991397
    14001398        if ( $locked ) {
    14011399                if ( get_post_type_object( $post->post_type )->public ) {
    1402                         $preview_link = set_url_scheme( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) );
     1400                        $query_args = array( 'preview' => 'true' );
    14031401
    14041402                        if ( 'publish' == $post->post_status || $user->ID != $post->post_author ) {
    14051403                                // Latest content is in autosave
    14061404                                $nonce = wp_create_nonce( 'post_preview_' . $post->ID );
    1407                                 $preview_link = add_query_arg( array( 'preview_id' => $post->ID, 'preview_nonce' => $nonce ), $preview_link );
     1405                                $query_args['preview_id'] = $post->ID;
     1406                                $query_args['preview_nonce'] = $nonce;
    14081407                        }
    14091408                } else {
    1410                         $preview_link = '';
     1409                        $query_args = false;
    14111410                }
    14121411
    1413                 /** This filter is documented in wp-admin/includes/meta-boxes.php */
    1414                 $preview_link = apply_filters( 'preview_post_link', $preview_link, $post );
     1412                $preview_link = get_preview_post_link( $post->ID, $query_args );
    14151413
    14161414                /**
    14171415                 * Filter whether to allow the post lock to be overridden.
     
    16101608                        $query_args['post_format'] = empty( $_POST['post_format'] ) ? 'standard' : sanitize_key( $_POST['post_format'] );
    16111609        }
    16121610
    1613         $url = add_query_arg( $query_args, get_permalink( $post->ID ) );
    1614 
    1615         /** This filter is documented in wp-admin/includes/meta-boxes.php */
    1616         return apply_filters( 'preview_post_link', $url, $post );
     1611        return get_preview_post_link( $post->ID, $query_args );
    16171612}
    16181613
    16191614/**
  • wp-includes/admin-bar.php

     
    494494                        && ( $post_type_object->show_in_admin_bar ) )
    495495                {
    496496                        if( 'draft' == $post->post_status ) {
    497                                 $preview_link = set_url_scheme( get_permalink( $post->ID ) );
    498                                 /** This filter is documented in wp-admin/includes/meta-boxes.php */
    499                                 $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
     497                                $preview_link = get_preview_post_link( $post->ID );
    500498                                $wp_admin_bar->add_menu( array(
    501499                                        'id' => 'preview',
    502500                                        'title' => $post_type_object->labels->view_item,
  • wp-includes/link-template.php

     
    11511151}
    11521152
    11531153/**
     1154 * Retrieve preview post link.
     1155 *
     1156 * Get the preview post URL. Allow any number of query args to be appended.
     1157 *
     1158 * @since 4.1.0
     1159 *
     1160 * @param int $id Optional. Post ID.
     1161 * @param mixed boolean/array $preview Optional. If preview query arg should be added. Or array of query args to be added.
     1162 * @param string boolean/array $preview_link Optional. If a link other than the permalink should be used. Used by _wp_link_page.
     1163 * @return string
     1164 */
     1165function get_preview_post_link( $id = 0, $preview = true, $preview_link = '' ) {
     1166        if ( ! $post = get_post( $id ) )
     1167                return;
     1168
     1169        if( get_post_type_object( $post->post_type )->public ) {
     1170
     1171                if( ! $preview_link )
     1172                        $preview_link = get_permalink( $post->ID );
     1173
     1174                if( $preview ) {
     1175                        $query_args = is_array( $preview ) ? $preview : array( 'preview' => 'true' );
     1176
     1177                        $preview_link = add_query_arg( $query_args, $preview_link );
     1178                }
     1179        }
     1180
     1181        /**
     1182         * Filter the URI of a post preview in the post submit box.
     1183         *
     1184         * @since 2.0.5
     1185         * @since 4.0.0 $post parameter was added.
     1186         *
     1187         * @param string  $preview_link URI the user will be directed to for a post preview.
     1188         * @param WP_Post $post         Post object.
     1189         */
     1190        return apply_filters( 'preview_post_link', $preview_link, $post );
     1191}
     1192
     1193/**
    11541194 * Retrieve edit posts link for post.
    11551195 *
    11561196 * Can be used within the WordPress loop or outside of it. Can be used with
  • wp-includes/post-template.php

     
    840840function _wp_link_page( $i ) {
    841841        global $wp_rewrite;
    842842        $post = get_post();
     843        $query_args = array();
    843844
    844845        if ( 1 == $i ) {
    845846                $url = get_permalink();
     
    853854        }
    854855
    855856        if ( is_preview() ) {
    856                 $url = add_query_arg( array(
    857                         'preview' => 'true'
    858                 ), $url );
    859857
     858                $query_args['preview'] = 'true';
     859
    860860                if ( ( 'draft' !== $post->post_status ) && isset( $_GET['preview_id'], $_GET['preview_nonce'] ) ) {
    861                         $url = add_query_arg( array(
    862                                 'preview_id'    => wp_unslash( $_GET['preview_id'] ),
    863                                 'preview_nonce' => wp_unslash( $_GET['preview_nonce'] )
    864                         ), $url );
     861                                $query_args['preview_id'] = wp_unslash( $_GET['preview_id'] );
     862                                $query_args['preview_nonce'] = wp_unslash( $_GET['preview_nonce'] );
    865863                }
     864
     865                $url = get_preview_post_link( $post->ID, $query_args, $url );
    866866        }
    867867
    868868        return '<a href="' . esc_url( $url ) . '">';