WordPress.org

Make WordPress Core

Ticket #24010: 24010.3.diff

File 24010.3.diff, 19.0 KB (added by markjaquith, 5 years ago)
  • wp-admin/includes/post-formats.php

    $format_meta = get_post_format_meta( $post_ID ); 
    1111
    1212        <div class="field wp-format-quote">
    1313                <label for="wp_format_quote"><?php _e( 'Quote' ); ?></label>
    14                 <textarea id="wp_format_quote" name="_wp_format_quote" class="widefat"><?php echo esc_textarea( $format_meta['quote'] ); ?></textarea>
     14                <textarea id="wp_format_quote" name="_format_quote" class="widefat"><?php echo esc_textarea( $format_meta['quote'] ); ?></textarea>
    1515        </div>
    1616
    1717        <div class="field wp-format-quote">
    1818                <label for="wp_format_quote_source"><?php _e( 'Quote source' ); ?></label>
    19                 <input type="text" id="wp_format_quote_source" name="_wp_format_quote_source" value="<?php echo esc_attr( $format_meta['quote_source'] ); ?>" class="widefat" />
     19                <input type="text" id="wp_format_quote_source" name="_format_quote_source_name" value="<?php echo esc_attr( $format_meta['quote_source_name'] ); ?>" class="widefat" />
    2020        </div>
    2121
    2222        <div class="field wp-format-image">
    23                 <?php if ( ! empty( $format_meta['image'] ) ) : ?>
     23                <?php if ( ! empty( $format_meta['image'] ) ) :
     24                        $value = $format_meta['image'];
     25                ?>
    2426                <div id="image-preview" class="wp-format-media-preview">
    2527                        <?php
    26                                 if ( is_numeric( $format_meta['image'] ) ) {
    27                                         $format_meta['image'] = absint( $format_meta['image'] );
     28                                if ( is_numeric( $value ) ) {
     29                                        $format_meta['image'] = absint( $value );
    2830                                        $image = wp_get_attachment_url( $format_meta['image'] );
    2931                                        printf( '<img src="%s" alt="%s" />', esc_url( $image ), get_the_title( $format_meta['image'] ) );
    30                                 } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $format_meta['image'] ) ) {
    31                                         echo do_shortcode( $format_meta['image'] );
    32                                 } elseif ( ! preg_match( '#<[^>]+>#', $format_meta['image'] ) ) {
    33                                         printf( '<img src="%s" alt="" />', esc_url( $format_meta['image'] ) );
     32                                } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $value ) ) {
     33                                        echo do_shortcode( $value );
     34                                } elseif ( ! preg_match( '#<[^>]+>#', $value ) ) {
     35                                        printf( '<img src="%s" alt="" />', esc_url( $value ) );
    3436                                } else {
    35                                         echo $format_meta['image'];
     37                                        echo $value;
    3638                                }
    3739                        ?>
    3840                </div>
    $format_meta = get_post_format_meta( $post_ID ); 
    5355                </div>
    5456        </div>
    5557
    56         <div class="field wp-format-link wp-format-quote wp-format-image">
    57                 <label for="wp_format_url"><?php _e( 'Link URL' ); ?></label>
    58                 <input type="text" id="wp_format_url" name="_wp_format_url" value="<?php echo esc_url( $format_meta['url'] ); ?>" class="widefat" />
     58        <div class="field wp-format-link">
     59                <label for="wp_format_link_url"><?php _e( 'Link URL' ); ?></label>
     60                <input type="text" id="wp_format_link_url" name="_format_link_url" value="<?php echo esc_url( $format_meta['link_url'] ); ?>" class="widefat" />
     61        </div>
     62
     63        <div class="field wp-format-quote">
     64                <label for="wp_format_quote_source_url"><?php _e( 'Link URL' ); ?></label>
     65                <input type="text" id="wp_format_quote_source_url" name="_format_quote_source_url" value="<?php echo esc_url( $format_meta['quote_source_url'] ); ?>" class="widefat" />
     66        </div>
     67
     68        <div class="field wp-format-image">
     69                <label for="wp_format_image_url"><?php _e( 'Link URL' ); ?></label>
     70                <input type="text" id="wp_format_image_url" name="_format_url" value="<?php echo esc_url( $format_meta['url'] ); ?>" class="widefat" />
    5971        </div>
    6072
    6173        <div class="field wp-format-video">
    62                 <?php if ( ! empty( $format_meta['video'] ) ): ?>
     74                <?php if ( ! empty( $format_meta['video_embed'] ) ):
     75                        $value = $format_meta['video_embed'];
     76                ?>
    6377                <div id="video-preview" class="wp-format-media-preview">
    6478                        <?php
    65                                 if ( is_numeric( $format_meta['video'] ) ) {
    66                                         $url = wp_get_attachment_url( $format_meta['video'] );
     79                                if ( is_numeric( $value ) ) {
     80                                        $url = wp_get_attachment_url( $value );
    6781                                        echo do_shortcode( sprintf( '[video src="%s"]', $url ) );
    68                                 } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $format_meta['video'] ) ) {
    69                                         echo do_shortcode( $format_meta['video'] );
    70                                 } elseif ( ! preg_match( '#<[^>]+>#', $format_meta['video'] ) ) {
    71                                         if ( strstr( $format_meta['video'], home_url() ) )
    72                                                 echo do_shortcode( sprintf( '[video src="%s"]', $format_meta['video'] ) );
     82                                } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $value ) ) {
     83                                        echo do_shortcode( $value );
     84                                } elseif ( ! preg_match( '#<[^>]+>#', $value ) ) {
     85                                        if ( strstr( $value, home_url() ) )
     86                                                echo do_shortcode( sprintf( '[video src="%s"]', $value ) );
    7387                                        else
    74                                                 echo $wp_embed->autoembed( $format_meta['video'] );
     88                                                echo $wp_embed->autoembed( $value );
    7589                                } else {
    76                                         echo $format_meta['video'];
     90                                        echo $value;
    7791                                }
    7892                        ?>
    7993                </div>
    $format_meta = get_post_format_meta( $post_ID ); 
    8498                        else
    8599                                _e( 'Video URL' );
    86100                ?></label>
    87                 <textarea id="wp_format_video" type="text" name="_wp_format_video" class="widefat"><?php esc_html_e( $format_meta['video'] ); ?></textarea>
     101                <textarea id="wp_format_video" type="text" name="_wp_format_video" class="widefat"><?php esc_html_e( $format_meta['video_embed'] ); ?></textarea>
    88102                <div data-format="video" class="wp-format-media-holder hide-if-no-js">
    89103                        <a href="#" class="wp-format-media-select"
    90104                                data-choose="<?php esc_attr_e( 'Choose a Video' ); ?>"
    $format_meta = get_post_format_meta( $post_ID ); 
    95109        </div>
    96110
    97111        <div class="field wp-format-audio">
    98                 <?php if ( ! empty( $format_meta['audio'] ) ): ?>
     112                <?php if ( ! empty( $format_meta['audio_embed'] ) ):
     113                        $value = $format_meta['audio_embed'];
     114                ?>
    99115                <div id="audio-preview" class="wp-format-media-preview">
    100116                        <?php
    101                                 if ( is_numeric( $format_meta['audio'] ) ) {
    102                                         $url = wp_get_attachment_url( $format_meta['audio'] );
     117                                if ( is_numeric( $value ) ) {
     118                                        $url = wp_get_attachment_url( $value );
    103119                                        echo do_shortcode( sprintf( '[audio src="%s"]', $url ) );
    104                                 } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $format_meta['audio'] ) ) {
    105                                         echo do_shortcode( $format_meta['audio'] );
    106                                 } elseif ( ! preg_match( '#<[^>]+>#', $format_meta['audio'] ) ) {
    107                                         if ( strstr( $format_meta['audio'], home_url() ) )
    108                                                 echo do_shortcode( sprintf( '[audio src="%s"]', $format_meta['audio'] ) );
     120                                } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $value ) ) {
     121                                        echo do_shortcode( $value );
     122                                } elseif ( ! preg_match( '#<[^>]+>#', $value ) ) {
     123                                        if ( strstr( $value, home_url() ) )
     124                                                echo do_shortcode( sprintf( '[audio src="%s"]', $value ) );
    109125                                        else
    110                                                 echo $wp_embed->autoembed( $format_meta['audio'] );
     126                                                echo $wp_embed->autoembed( $value );
    111127                                } else {
    112                                         echo $format_meta['audio'];
     128                                        echo $value;
    113129                                }
    114130                        ?>
    115131                </div>
    $format_meta = get_post_format_meta( $post_ID ); 
    120136                        else
    121137                                _e( 'Audio URL' );
    122138                ?></label>
    123                 <textarea id="wp_format_audio" name="_wp_format_audio" class="widefat"><?php esc_html_e( $format_meta['audio'] ); ?></textarea>
     139                <textarea id="wp_format_audio" name="_wp_format_audio" class="widefat"><?php esc_html_e( $format_meta['audio_embed'] ); ?></textarea>
    124140                <div data-format="audio" class="wp-format-media-holder hide-if-no-js">
    125141                        <a href="#" class="wp-format-media-select" data-choose="<?php esc_attr_e( 'Choose Audio' ); ?>" data-update="<?php esc_attr_e( 'Select Audio' ); ?>">
    126142                                <?php _e( 'Select Audio From Media Library' ) ?>
  • wp-admin/includes/post.php

    function edit_post( $post_data = null ) { 
    192192        }
    193193
    194194        // Post Formats
    195         if ( isset( $post_data['post_format'] ) ) {
     195        if ( isset( $post_data['post_format'] ) )
    196196                set_post_format( $post_ID, $post_data['post_format'] );
    197         }
    198197
    199         if ( isset( $post_data[ '_wp_format_url' ] ) ) {
    200                 update_post_meta( $post_ID, '_wp_format_url', wp_slash( esc_url_raw( wp_unslash( $post_data['_wp_format_url'] ) ) ) );
     198        $format_meta_urls = array( 'url', 'link_url', 'quote_source_url' );
     199        foreach ( $format_meta_urls as $format_meta_url ) {
     200                $keyed = '_format_' . $format_meta_url;
     201                if ( isset( $post_data[ $keyed ] ) )
     202                        update_post_meta( $post_ID, $keyed, wp_slash( esc_url_raw( wp_unslash( $post_data[ $keyed ] ) ) ) );
    201203        }
    202204
    203         $format_keys = array( 'quote', 'quote_source', 'image', 'gallery', 'audio', 'video' );
     205        $format_keys = array( 'quote', 'quote_source_name', 'image', 'gallery', 'audio_embed', 'video_embed' );
    204206
    205207        foreach ( $format_keys as $key ) {
    206                 if ( isset( $post_data[ '_wp_format_' . $key ] ) ) {
     208                $keyed = '_format_' . $key;
     209                if ( isset( $post_data[ $keyed ] ) ) {
    207210                        if ( current_user_can( 'unfiltered_html' ) )
    208                                 update_post_meta( $post_ID, '_wp_format_' . $key, $post_data[ '_wp_format_' . $key ] );
     211                                update_post_meta( $post_ID, $keyed, $post_data[ $keyed ] );
    209212                        else
    210                                 update_post_meta( $post_ID, '_wp_format_' . $key, wp_filter_post_kses( $post_data[ '_wp_format_' . $key ] ) );
     213                                update_post_meta( $post_ID, $keyed, wp_filter_post_kses( $post_data[ $keyed ] ) );
    211214                }
    212215        }
    213216
  • wp-admin/js/post-formats.js

     
    11window.wp = window.wp || {};
    22
    33(function($) {
    4         var container, mediaFrame, lastMimeType, lastMenu, mediaPreview,
     4        var container, mediaFrame, lastMimeType, mediaPreview,
    55            noUIFormats = ['standard', 'chat', 'status', 'aside', 'gallery'],
    66            $container  = $( '.post-formats-fields' );
    77
    window.wp = window.wp || {}; 
    7676                // Media selection
    7777                $('.wp-format-media-select').click(function(event) {
    7878                        event.preventDefault();
    79                         var $el = $(this), mime,
     79                        var $el = $(this), mime = 'image',
    8080                            $holder = $el.closest('.wp-format-media-holder'),
    8181                            $field = $( '#wp_format_' + $holder.data('format') );
    8282
  • wp-includes/js/autosave.js

    wp.autosave.getPostData = function() { 
    367367        post_format = $('#post_format').val() || '';
    368368        data['post_format'] = post_format == 'standard' ? '' : post_format;
    369369
    370         $('.post-formats-fields').find('input[name^="_wp_format_"], textarea[name^="_wp_format_"]').each( function(i, field) {
     370        $('.post-formats-fields').find('input[name^="_format_"], textarea[name^="_format_"]').each( function(i, field) {
    371371                data[ field.name ] = field.value || '';
    372372        });
    373373
  • wp-includes/media.php

    function get_the_post_format_media( $type, &$post = null, $limit = 0 ) { 
    20742074
    20752075        if ( has_post_format( $type, $post ) ) {
    20762076                $meta = get_post_format_meta( $post->ID );
    2077                 if ( ! empty( $meta[$type] ) ) {
    2078                         if ( is_integer( $meta[$type] ) ) {
    2079                                 $url = wp_get_attachment_url( $meta[$type] );
     2077                if ( ! empty( $meta[$type . '_embed'] ) ) {
     2078                        $value = $meta[$type . '_embed'];
     2079                        if ( is_integer( $value ) ) {
     2080                                $url = wp_get_attachment_url( $value );
    20802081                                $shortcode = sprintf( '[%s src="%s"]', $type, $url );
    2081                         } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $meta[$type] ) ) {
    2082                                 $shortcode = $meta[$type];
    2083                         } elseif ( preg_match( '#<[^>]+>#', $meta[$type] ) ) {
    2084                                 $post->format_content = $meta[$type];
     2082                        } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $value ) ) {
     2083                                $shortcode = $value;
     2084                        } elseif ( preg_match( '#<[^>]+>#', $value ) ) {
     2085                                $post->format_content = $value;
    20852086                                return $post->format_content;
    2086                         } elseif ( 0 === strpos( $meta[$type], 'http' ) ) {
    2087                                 $post->split_content = str_replace( $meta[$type], '', $post->post_content, $count );
    2088                                 if ( strstr( $meta[$type], home_url() ) ) {
    2089                                         $shortcode = sprintf( '[%s src="%s"]', $type, $meta[$type] );
     2087                        } elseif ( 0 === strpos( $value, 'http' ) ) {
     2088                                $post->split_content = str_replace( $value, '', $post->post_content, $count );
     2089                                if ( strstr( $value, home_url() ) ) {
     2090                                        $shortcode = sprintf( '[%s src="%s"]', $type, $value );
    20902091                                } else {
    2091                                         $post->format_content = $wp_embed->autoembed( $meta[$type] );
     2092                                        $post->format_content = $wp_embed->autoembed( $value );
    20922093                                        return $post->format_content;
    20932094                                }
    20942095                        }
  • wp-includes/post-formats.php

    function set_post_format( $post, $format ) { 
    8181 * @return array The array of post format metadata.
    8282 */
    8383function get_post_format_meta( $post_id = 0 ) {
    84         $values = array(
    85                 'quote'        => '',
    86                 'quote_source' => '',
    87                 'url'          => '',
    88                 'image'        => '',
    89                 'gallery'      => '',
    90                 'audio'        => '',
    91                 'video'        => '',
     84        $meta = get_post_meta( $post_id );
     85
     86        if ( empty( $meta ) )
     87                return array();
     88
     89        $upgrade = array(
     90                '_wp_format_quote_source' => 'quote_source_name',
     91                '_wp_format_audio' => 'audio_embed',
     92                '_wp_format_video' => 'video_embed'
    9293        );
    9394
    94         foreach ( $values as $key => $value )
    95                 $values[$key] = get_post_meta( $post_id, '_wp_format_' . $key, true );
     95        $format = get_post_format( $post_id );
     96        if ( ! empty( $format ) ) {
     97                switch ( $format ) {
     98                case 'link':
     99                        $upgrade['_wp_format_url'] = 'link_url';
     100                        break;
     101                case 'quote':
     102                        $upgrade['_wp_format_url'] = 'quote_source_url';
     103                        break;
     104                }
     105        }
     106
     107        $upgrade_keys = array_keys( $upgrade );
     108        foreach ( $meta as $key => $values ) {
     109                if ( ! in_array( $key, $upgrade_keys ) )
     110                        continue;
     111                update_post_meta( $post_id, '_format_' . $upgrade[$key], reset( $values ) );
     112                delete_post_meta( $post_id, $key );
     113        }
     114
     115        $keys = array( 'quote', 'quote_source_name', 'quote_source_url', 'link_url', 'gallery', 'audio_embed', 'video_embed', 'url', 'image' );
     116        $values = array();
     117
     118        foreach ( $keys as $key ) {
     119                $value = get_post_meta( $post_id, '_format_' . $key, true );
     120                $values[$key] = empty( $value ) ? '' : $value;
     121        }
    96122
    97123        return $values;
    98124}
    function post_formats_compat( $content, $id = 0 ) { 
    324350                        $compat['tag'] = '';
    325351                        $compat['position'] = 'before';
    326352
    327                         if ( ! empty( $meta['url'] ) ) {
    328                                 $esc_url = preg_quote( $meta['url'], '#' );
     353                        if ( ! empty( $meta['link_url'] ) ) {
     354                                $esc_url = preg_quote( $meta['link_url'], '#' );
    329355                                // Make sure the same URL isn't in the post (modified/extended versions allowed)
    330356                                if ( ! preg_match( '#' . $esc_url . '[^/&\?]?#', $content ) ) {
    331                                         $url = $meta['url'];
     357                                        $url = $meta['link_url'];
    332358                                } else {
    333359                                        $url = get_content_url( $content, true );
    334360                                }
    function post_formats_compat( $content, $id = 0 ) { 
    344370                                        '<a %shref="%s">%s</a>',
    345371                                        empty( $compat['link_class'] ) ? '' : sprintf( 'class="%s" ', esc_attr( $compat['link_class'] ) ),
    346372                                        esc_url( $url ),
    347                                         empty( $post->post_title ) ? esc_url( $meta['url'] ) : apply_filters( 'the_title', $post->post_title, $post->ID )
     373                                        empty( $post->post_title ) ? esc_url( $meta['link_url'] ) : apply_filters( 'the_title', $post->post_title, $post->ID )
    348374                                );
    349375                        }
    350376                        break;
    function post_formats_compat( $content, $id = 0 ) { 
    376402                        if ( ! empty( $meta['quote'] ) && ! stristr( $content, $meta['quote'] ) ) {
    377403                                $quote = sprintf( '<blockquote>%s</blockquote>', wpautop( $meta['quote'] ) );
    378404                                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'] );
     405                                        $source = ( empty( $meta['quote_source_url'] ) ) ? $meta['quote_source_name'] : sprintf( '<a href="%s">%s</a>', esc_url( $meta['quote_source_url'] ), $meta['quote_source_name'] );
    380406                                        $quote .= sprintf( '<figcaption class="quote-caption">%s</figcaption>', $source );
    381407                                }
    382408                                $format_output .= sprintf( '<figure class="quote">%s</figure>', $quote );
    function post_formats_compat( $content, $id = 0 ) { 
    385411
    386412                case 'video':
    387413                case 'audio':
    388                         if ( ! has_shortcode( $post->post_content, $format ) && ! empty( $meta[$format] ) ) {
     414                        if ( ! has_shortcode( $post->post_content, $format ) && ! empty( $meta[$format . '_embed'] ) ) {
     415                                $value = $meta[$format . '_embed'];
    389416                                // the metadata is an attachment ID
    390                                 if ( is_numeric( $meta[$format] ) ) {
    391                                         $url = wp_get_attachment_url( $meta[$format] );
     417                                if ( is_numeric( $value ) ) {
     418                                        $url = wp_get_attachment_url( $value );
    392419                                        $format_output .= sprintf( '[%s src="%s"]', $format, $url );
    393420                                // the metadata is a shortcode or an embed code
    394                                 } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $meta[$format] ) || preg_match( '#<[^>]+>#', $meta[$format] ) ) {
    395                                         $format_output .= $meta[$format];
    396                                 } elseif ( ! stristr( $content, $meta[$format] ) ) {
     421                                } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $value ) || preg_match( '#<[^>]+>#', $value ) ) {
     422                                        $format_output .= $value;
     423                                } elseif ( ! stristr( $content, $value ) ) {
    397424                                        // attempt to embed the URL
    398                                         $format_output .= sprintf( '[embed]%s[/embed]', $meta[$format] );
     425                                        $format_output .= sprintf( '[embed]%s[/embed]', $value );
    399426                                }
    400427                        }
    401428                        break;
    function get_the_post_format_url( $id = 0 ) { 
    707734        if ( empty( $post ) )
    708735                return '';
    709736
    710         if ( in_array( get_post_format( $post->ID ), array( 'image', 'link', 'quote' ) ) ) {
     737        $format = get_post_format( $post->ID );
     738        if ( in_array( $format, array( 'image', 'link', 'quote' ) ) ) {
    711739                $meta = get_post_format_meta( $post->ID );
    712                 if ( ! empty( $meta['url'] ) )
    713                         return apply_filters( 'get_the_post_format_url', esc_url_raw( $meta['url'] ), $post );
     740                $meta_link = '';
     741
     742                switch ( $format ) {
     743                case 'link':
     744                        if ( ! empty( $meta['link_url'] ) )
     745                                $meta_link = $meta['link_url'];
     746                        break;
     747                case 'image':
     748                        if ( ! empty( $meta['url'] ) )
     749                                $meta_link = $meta['url'];
     750                        break;
     751                case 'quote':
     752                        if ( ! empty( $meta['quote_source_url'] ) )
     753                                $meta_link = $meta['quote_source_url'];
     754                        break;
     755                }
     756
     757                if ( ! empty( $meta_link ) )
     758                        return apply_filters( 'get_the_post_format_url', esc_url_raw( $meta_link ), $post );
    714759        }
    715760
    716761        if ( ! empty( $post->post_content ) )
  • wp-includes/revision.php

    function _wp_post_revision_fields( $post = null, $autosave = false ) { 
    6868 */
    6969function _wp_post_revision_meta_keys() {
    7070        return array(
    71                 '_wp_format_url',
    72                 '_wp_format_quote',
    73                 '_wp_format_quote_source',
    74                 '_wp_format_image',
    75                 '_wp_format_gallery',
    76                 '_wp_format_audio',
    77                 '_wp_format_video',
     71                '_format_url',
     72                '_format_link_url',
     73                '_format_quote_source_url',
     74                '_format_quote_source_name',
     75                '_format_quote',
     76                '_format_image',
     77                '_format_gallery',
     78                '_format_audio_embed',
     79                '_format_video_embed',
    7880        );
    7981}
    8082