WordPress.org

Make WordPress Core

Ticket #12922: 12922.5.diff

File 12922.5.diff, 8.3 KB (added by flixos90, 3 years ago)
  • src/wp-admin/admin-ajax.php

     
    6262        'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
    6363        'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail',
    6464        'parse-media-shortcode', 'destroy-sessions', 'install-plugin', 'update-plugin', 'press-this-save-post',
    65         'press-this-add-category', 'crop-image', 'generate-password', 'save-wporg-username', 'delete-plugin',
    66         'search-plugins', 'search-install-plugins', 'activate-plugin', 'update-theme', 'delete-theme',
    67         'install-theme', 'test_url',
     65        'press-this-add-category', 'crop-image', 'generate-password', 'save-wporg-username',
     66        'get-post-thumbnail-html', 'delete-plugin', 'search-plugins', 'search-install-plugins', 'activate-plugin',
     67        'update-theme', 'delete-theme', 'install-theme', 'test_url',
    6868);
    6969
    7070// Deprecated
  • src/wp-admin/includes/ajax-actions.php

     
    21642164}
    21652165
    21662166/**
     2167 * Ajax handler for retrieving HTML for the featured image.
     2168 *
     2169 * @since 4.6.0
     2170 */
     2171function wp_ajax_get_post_thumbnail_html() {
     2172        $post_ID = intval( $_POST['post_id'] );
     2173
     2174        check_ajax_referer( "update-post_$post_ID" );
     2175
     2176        if ( ! current_user_can( 'edit_post', $post_ID ) ) {
     2177                wp_die( -1 );
     2178        }
     2179
     2180        $thumbnail_id = intval( $_POST['thumbnail_id'] );
     2181
     2182        // For backwards compatibility, -1 refers to no featured image.
     2183        if ( -1 === $thumbnail_id ) {
     2184                $thumbnail_id = null;
     2185        }
     2186
     2187        $return = _wp_post_thumbnail_html( $thumbnail_id, $post_ID );
     2188        wp_send_json_success( $return );
     2189}
     2190
     2191/**
    21672192 * Ajax handler for setting the featured image for an attachment.
    21682193 *
    21692194 * @since 4.0.0
  • src/wp-admin/includes/post.php

     
    14281428                                $thumbnail_html
    14291429                        );
    14301430                        $content .= '<p class="hide-if-no-js howto" id="set-post-thumbnail-desc">' . __( 'Click the image to edit or update' ) . '</p>';
    1431                         $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail(\'' . $ajax_nonce . '\');return false;">' . esc_html( $post_type_object->labels->remove_featured_image ) . '</a></p>';
     1431                        $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail">' . esc_html( $post_type_object->labels->remove_featured_image ) . '</a></p>';
    14321432                }
    14331433        }
    14341434
     1435        $content .= '<input type="hidden" id="_thumbnail_id" name="_thumbnail_id" value="' . esc_attr( $thumbnail_id ? $thumbnail_id : '-1' ) . '" />';
     1436
    14351437        /**
    14361438         * Filters the admin post thumbnail HTML markup to return.
    14371439         *
  • src/wp-includes/js/autosave.js

     
    3434                                post_author: $( '#post_author' ).val() || '',
    3535                                post_title: $( '#title' ).val() || '',
    3636                                content: $( '#content' ).val() || '',
    37                                 excerpt: $( '#excerpt' ).val() || ''
     37                                excerpt: $( '#excerpt' ).val() || '',
     38                                _thumbnail_id: $( '#_thumbnail_id' ).val() || -1
    3839                        };
    3940
    4041                        if ( type === 'local' ) {
  • src/wp-includes/js/media-editor.js

     
    649649
    650650                        settings.post.featuredImageId = id;
    651651
    652                         wp.media.post( 'set-post-thumbnail', {
    653                                 json:         true,
     652                        wp.media.post( 'get-post-thumbnail-html', {
    654653                                post_id:      settings.post.id,
    655654                                thumbnail_id: settings.post.featuredImageId,
    656655                                _wpnonce:     settings.post.nonce
    657656                        }).done( function( html ) {
     657                                if ( html == '0' ) {
     658                                        window.alert( window.setPostThumbnailL10n.error );
     659                                        return;
     660                                }
    658661                                $( '.inside', '#postimagediv' ).html( html );
    659662                        });
    660663                },
    661664                /**
     665                 * Remove the featured image id, save the post thumbnail data and
     666                 * set the HTML in the post meta box to no featured image.
     667                 */
     668                remove: function() {
     669                        wp.media.featuredImage.set( -1 );
     670                },
     671                /**
    662672                 * The Featured Image workflow
    663673                 *
    664674                 * @global wp.media.controller.FeaturedImage
     
    735745
    736746                                wp.media.featuredImage.frame().open();
    737747                        }).on( 'click', '#remove-post-thumbnail', function() {
    738                                 wp.media.view.settings.post.featuredImageId = -1;
     748                                wp.media.featuredImage.remove();
     749                                return false;
    739750                        });
    740751                }
    741752        };
  • src/wp-includes/post.php

     
    16171617 */
    16181618function add_post_meta( $post_id, $meta_key, $meta_value, $unique = false ) {
    16191619        // Make sure meta is added to the post, not a revision.
    1620         if ( $the_post = wp_is_post_revision($post_id) )
     1620        if ( '_thumbnail_id' !== $meta_key && ( $the_post = wp_is_post_revision( $post_id ) ) )
    16211621                $post_id = $the_post;
    16221622
    16231623        return add_metadata('post', $post_id, $meta_key, $meta_value, $unique);
     
    16401640 */
    16411641function delete_post_meta( $post_id, $meta_key, $meta_value = '' ) {
    16421642        // Make sure meta is added to the post, not a revision.
    1643         if ( $the_post = wp_is_post_revision($post_id) )
     1643        if ( '_thumbnail_id' !== $meta_key && ( $the_post = wp_is_post_revision( $post_id ) ) )
    16441644                $post_id = $the_post;
    16451645
    16461646        return delete_metadata('post', $post_id, $meta_key, $meta_value);
     
    16821682 */
    16831683function update_post_meta( $post_id, $meta_key, $meta_value, $prev_value = '' ) {
    16841684        // Make sure meta is added to the post, not a revision.
    1685         if ( $the_post = wp_is_post_revision($post_id) )
     1685        if ( '_thumbnail_id' !== $meta_key && ( $the_post = wp_is_post_revision( $post_id ) ) )
    16861686                $post_id = $the_post;
    16871687
    16881688        return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
     
    32603260                }
    32613261        }
    32623262
     3263        if ( isset( $postarr['_thumbnail_id'] ) && ( post_type_supports( $post_type, 'thumbnail' ) || 'revision' === $post_type ) ) {
     3264                $thumbnail_id = intval( $postarr['_thumbnail_id'] );
     3265                if ( -1 === $thumbnail_id ) {
     3266                        delete_post_thumbnail( $post_ID );
     3267                } else {
     3268                        set_post_thumbnail( $post_ID, $thumbnail_id );
     3269                }
     3270        }
     3271
    32633272        if ( ! empty( $postarr['meta_input'] ) ) {
    32643273                foreach ( $postarr['meta_input'] as $field => $value ) {
    32653274                        update_post_meta( $post_ID, $field, $value );
  • src/wp-includes/revision.php

     
    3434                        'post_title' => __( 'Title' ),
    3535                        'post_content' => __( 'Content' ),
    3636                        'post_excerpt' => __( 'Excerpt' ),
     37                        '_thumbnail_id' => __( 'Featured Image' ),
    3738                );
    3839        }
    3940
     
    530531        $post->post_excerpt = $preview->post_excerpt;
    531532
    532533        add_filter( 'get_the_terms', '_wp_preview_terms_filter', 10, 3 );
     534        add_filter( 'get_post_metadata', '_wp_preview_post_thumbnail_filter', 10, 4 );
    533535
    534536        return $post;
    535537}
     
    578580}
    579581
    580582/**
     583 * Filters post thumbnail lookup to set the post thumbnail.
     584 *
     585 * @since 4.6.0
     586 * @access private
     587 *
     588 * @param null|array|string $value     The value to return - a single metadata value, or an array of values.
     589 * @param int               $post_id   Post ID.
     590 * @param string            $meta_key  Meta key.
     591 * @param bool              $single    Whether to return only the first value of the specified $meta_key.
     592 * @return null|array The default return value or the post thumbnail meta array.
     593 */
     594function _wp_preview_post_thumbnail_filter( $value, $post_id, $meta_key, $single ) {
     595        if ( '_thumbnail_id' !== $meta_key ) {
     596                return $value;
     597        }
     598
     599        $preview = wp_get_post_autosave( $post_id );
     600        if ( ! is_object( $preview ) ) {
     601                return $value;
     602        }
     603
     604        remove_filter( 'get_post_metadata', '_wp_preview_post_thumbnail_filter', 10, 4 );
     605
     606        $value = get_post_meta( $preview->ID, '_thumbnail_id', $single );
     607
     608        add_filter( 'get_post_metadata', '_wp_preview_post_thumbnail_filter', 10, 4 );
     609
     610        return $value;
     611}
     612
     613/**
    581614 * Gets the post revision version.
    582615 *
    583616 * @since 3.6.0