WordPress.org

Make WordPress Core

Ticket #24009: 24009.2.diff

File 24009.2.diff, 6.3 KB (added by DrewAPicture, 5 years ago)
  • wp-admin/edit-form-advanced.php

     
    166166                        'description' => __( 'Use the editor to compose a status update. What’s new?' )
    167167                ),
    168168                'quote' => array (
    169                         'description' => __( 'Copy a quotation into the box. Also add the source and URL if you have them.' )
     169                        'description' => __( 'Copy a quotation into the editor. Also add the source and URL if you have them.' )
    170170                ),
    171171                'aside' => array (
    172172                        'description' => __( 'An aside is a quick thought or side topic. Use the editor to compose one.' )
  • wp-admin/includes/post-formats.php

     
    99        <input type="hidden" name="post_format" id="post_format" value="<?php echo esc_attr( $post_format ); ?>" />
    1010
    1111        <div class="field wp-format-quote">
    12                 <label for="wp_format_quote"><?php _e( 'Quote' ); ?></label>
    13                 <textarea id="wp_format_quote" name="_wp_format_quote" class="widefat"><?php echo esc_textarea( $format_meta['quote'] ); ?></textarea>
    14         </div>
    15 
    16         <div class="field wp-format-quote">
    1712                <label for="wp_format_quote_source"><?php _e( 'Quote source' ); ?></label>
    1813                <input type="text" id="wp_format_quote_source" name="_wp_format_quote_source" value="<?php echo esc_attr( $format_meta['quote_source'] ); ?>" class="widefat" />
    1914        </div>
  • wp-includes/post-formats.php

     
    8282 */
    8383function get_post_format_meta( $post_id = 0 ) {
    8484        $values = array(
    85                 'quote'        => '',
    8685                'quote_source' => '',
    8786                'url'          => '',
    8887                'image'        => '',
     
    373372                        break;
    374373
    375374                case 'quote':
    376                         if ( ! empty( $meta['quote'] ) && ! stristr( $content, $meta['quote'] ) ) {
    377                                 $quote = sprintf( '<blockquote>%s</blockquote>', wpautop( $meta['quote'] ) );
    378                                 if ( ! empty( $meta['quote_source'] ) ) {
    379                                         $source = ( empty( $meta['url'] ) ) ? $meta['quote_source'] : sprintf( '<a href="%s">%s</a>', esc_url( $meta['url'] ), $meta['quote_source'] );
    380                                         $quote .= sprintf( '<figcaption class="quote-caption">%s</figcaption>', $source );
    381                                 }
    382                                 $format_output .= sprintf( '<figure class="quote">%s</figure>', $quote );
    383                         }
     375                        $quote = get_the_post_format_quote( $post );
     376
     377                        // Replace the existing quote in-place.
     378                        if ( ! empty( $quote ) )
     379                                get_content_quote( $content, true, $quote );
     380
    384381                        break;
    385382
    386383                case 'video':
     
    636633}
    637634
    638635/**
     636 * Get the first <blockquote> from the $content string passed by reference.
     637 *
     638 * If $content does not have a blockquote, assume the whole string
     639 * is the quote.
     640 *
     641 * @since 3.6.0
     642 *
     643 * @param string $content A string which might contain chat data, passed by reference.
     644 * @param bool $remove (optional) Whether to remove the quote from the content.
     645 * @param string $replace (optional) Content to replace the quote content with if $remove is set to true.
     646 * @return string The quote content.
     647 */
     648function get_content_quote( &$content, $remove = false, $replace = '' ) {
     649        if ( empty( $content ) )
     650                return '';
     651
     652        $matches = array();
     653        if ( ! preg_match( '/<blockquote[^>]*>(.+?)<\/blockquote>/is', $content, $matches ) ) {
     654                $quote = $content;
     655                if ( $remove || ! empty( $replace ) )
     656                        $content = $replace;
     657                return $quote;
     658        }
     659
     660        if ( $remove || ! empty( $replace ) )
     661                $content = preg_replace( '/<blockquote[^>]*>(.+?)<\/blockquote>/is', addcslashes( $replace, '\\$' ), $content, 1 );
     662
     663        return $matches[1];
     664}
     665
     666/**
     667 * Get a quote from the post content and set split_content for future use.
     668 *
     669 * @since 3.6.0
     670 *
     671 * @uses get_content_quote()
     672 *
     673 * @param object $post (optional) A reference to the post object, falls back to get_post().
     674 * @return string The quote html.
     675 */
     676function get_the_post_format_quote( &$post = null ) {
     677        if ( empty( $post ) )
     678                $post = get_post();
     679
     680        if ( empty( $post ) )
     681                return '';
     682
     683        $content = $post->post_content;
     684        $quote = get_content_quote( $content, true );
     685        $post->split_content = $content;
     686
     687        if ( ! empty( $quote ) )
     688                $quote = sprintf( '<blockquote>%s</blockquote>', wpautop( $quote ) );
     689
     690        $meta = get_post_format_meta( $post->ID );
     691        if ( ! empty( $meta['quote_source'] ) ) {
     692                $source = ( empty( $meta['url'] ) ) ? $meta['quote_source'] : sprintf( '<a href="%s">%s</a>', esc_url( $meta['url'] ), esc_html( $meta['quote_source'] ) );
     693                $quote .= sprintf( '<figcaption class="quote-caption">%s</figcaption>', $source );
     694        }
     695
     696        if ( ! empty( $quote ) )
     697                $quote = sprintf( '<figure class="quote">%s</figure>', $quote );
     698
     699        return $quote;
     700}
     701
     702/**
     703 * Outputs the post format quote.
     704 *
     705 * @since 3.6.0
     706 */
     707function the_post_format_quote() {
     708        echo get_the_post_format_quote();
     709}
     710
     711/**
    639712 * Extract a URL from passed content, if possible
    640713 * Checks for a URL on the first line of the content or the first encountered href attribute.
    641714 *
  • wp-includes/query.php

     
    36943694                $more = 1;
    36953695        $split_content = $content = $post->post_content;
    36963696        $format = get_post_format( $post );
    3697         if ( $format && in_array( $format, array( 'image', 'audio', 'video' ) ) ) {
     3697        if ( $format && in_array( $format, array( 'image', 'audio', 'video', 'quote' ) ) ) {
    36983698                switch ( $format ) {
    36993699                case 'image':
    37003700                        get_the_post_format_image( 'full', $post );
     
    37113711                        if ( isset( $post->split_content ) )
    37123712                                $split_content = $post->split_content;
    37133713                        break;
     3714                case 'quote':
     3715                        get_the_post_format_quote( $post );
     3716                        if ( isset( $post->split_content ) )
     3717                                $split_content = $post->split_content;
     3718                        break;
    37143719                }
    37153720        }
    37163721
  • wp-includes/revision.php

     
    6969function _wp_post_revision_meta_keys() {
    7070        return array(
    7171                '_wp_format_url',
    72                 '_wp_format_quote',
    7372                '_wp_format_quote_source',
    7473                '_wp_format_image',
    7574                '_wp_format_gallery',