Make WordPress Core

Changeset 54319


Ignore:
Timestamp:
09/26/2022 10:41:11 PM (2 years ago)
Author:
davidbaumwald
Message:

Shortcodes: Revert recent apply_shortcodes and do_shortcode changes.

[54248] reversed the wrapping of do_shortcode and apply_shortcodes and updated all direct internal calls of do_shortcode to apply_shortcodes after [47004]. After further consideration, the long history of do_shortcodes should be favored over any subjective semantic improvements. This change reverts the remaining changes from #55883 not already reverted in [54278].

Follow-up to [47004], [54248], and [54278].

Props azaozz, jorbin.
See #55883.

Location:
trunk/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/ajax-actions.php

    r54248 r54319  
    37893789        }
    37903790
    3791         $html = apply_shortcodes( $parsed );
     3791        $html = do_shortcode( $parsed );
    37923792
    37933793        global $wp_scripts;
     
    38623862    }
    38633863
    3864     $parsed = apply_shortcodes( $shortcode );
     3864    $parsed = do_shortcode( $shortcode );
    38653865
    38663866    if ( empty( $parsed ) ) {
  • trunk/src/wp-includes/block-template.php

    r54248 r54319  
    243243    $content = shortcode_unautop( $content );
    244244    $content = wp_filter_content_tags( $content );
    245     $content = apply_shortcodes( $content );
     245    $content = do_shortcode( $content );
    246246    $content = str_replace( ']]>', ']]>', $content );
    247247
  • trunk/src/wp-includes/class-wp-embed.php

    r54248 r54319  
    5353     * Since the [embed] shortcode needs to be run earlier than other shortcodes,
    5454     * this function removes all existing shortcodes, registers the [embed] shortcode,
    55      * calls apply_shortcodes(), and then re-registers the old shortcodes.
     55     * calls do_shortcode(), and then re-registers the old shortcodes.
    5656     *
    5757     * @global array $shortcode_tags
     
    7070
    7171        // Do the shortcode (only the [embed] one is registered).
    72         $content = apply_shortcodes( $content, true );
     72        $content = do_shortcode( $content, true );
    7373
    7474        // Put the original shortcodes back.
     
    178178
    179179    /**
    180      * The apply_shortcodes() callback function.
     180     * The do_shortcode() callback function.
    181181     *
    182182     * Attempts to convert a URL into embed HTML. Starts by checking the URL against the regex of
  • trunk/src/wp-includes/media.php

    r54248 r54319  
    22972297            $style,
    22982298            esc_attr( $class ),
    2299             apply_shortcodes( $content ),
     2299            do_shortcode( $content ),
    23002300            sprintf(
    23012301                '<figcaption %sclass="wp-caption-text">%s</figcaption>',
     
    23102310            $style,
    23112311            esc_attr( $class ),
    2312             str_replace( '<img ', '<img ' . $describedby, apply_shortcodes( $content ) ),
     2312            str_replace( '<img ', '<img ' . $describedby, do_shortcode( $content ) ),
    23132313            sprintf(
    23142314                '<p %sclass="wp-caption-text">%s</p>',
  • trunk/src/wp-includes/shortcodes.php

    r54248 r54319  
    2222 * To apply shortcode tags to content:
    2323 *
    24  *     $out = apply_shortcodes( $content );
     24 *     $out = do_shortcode( $content );
    2525 *
    2626 * @link https://developer.wordpress.org/plugins/shortcodes/
     
    172172 * Searches content for shortcodes and filter shortcodes through their hooks.
    173173 *
    174  * If there are no shortcode tags defined, then the content will be returned
    175  * without any filtering. This might cause issues when plugins are disabled but
    176  * the shortcode will still show up in the post or content.
     174 * This function is an alias for do_shortcode().
    177175 *
    178176 * @since 5.4.0
    179177 *
    180  * @global array $shortcode_tags List of shortcode tags and their callback hooks.
     178 * @see do_shortcode()
    181179 *
    182180 * @param string $content     Content to search for shortcodes.
     
    186184 */
    187185function apply_shortcodes( $content, $ignore_html = false ) {
    188     global $shortcode_tags;
    189 
    190     if ( false === strpos( $content, '[' ) ) {
    191         return $content;
    192     }
    193 
    194     if ( empty( $shortcode_tags ) || ! is_array( $shortcode_tags ) ) {
    195         return $content;
    196     }
    197 
    198     // Find all registered tag names in $content.
    199     preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
    200     $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
    201 
    202     if ( empty( $tagnames ) ) {
    203         return $content;
    204     }
    205 
    206     $content = do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames );
    207 
    208     $pattern = get_shortcode_regex( $tagnames );
    209     $content = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $content );
    210 
    211     // Always restore square braces so we don't break things like <!--[if IE ]>.
    212     $content = unescape_invalid_shortcodes( $content );
    213 
    214     return $content;
     186    return do_shortcode( $content, $ignore_html );
    215187}
    216188
     
    218190 * Searches content for shortcodes and filter shortcodes through their hooks.
    219191 *
    220  * This function is an alias for apply_shortcodes().
    221  *
    222  * @since 2.5.0
    223  *
    224  * @see apply_shortcodes()
     192 * If there are no shortcode tags defined, then the content will be returned
     193 * without any filtering. This might cause issues when plugins are disabled but
     194 * the shortcode will still show up in the post or content.
     195 *
     196 * @since 2.5.0
     197 *
     198 * @global array $shortcode_tags List of shortcode tags and their callback hooks.
    225199 *
    226200 * @param string $content     Content to search for shortcodes.
     
    230204 */
    231205function do_shortcode( $content, $ignore_html = false ) {
    232     return apply_shortcodes( $content, $ignore_html );
     206    global $shortcode_tags;
     207
     208    if ( false === strpos( $content, '[' ) ) {
     209        return $content;
     210    }
     211
     212    if ( empty( $shortcode_tags ) || ! is_array( $shortcode_tags ) ) {
     213        return $content;
     214    }
     215
     216    // Find all registered tag names in $content.
     217    preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
     218    $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
     219
     220    if ( empty( $tagnames ) ) {
     221        return $content;
     222    }
     223
     224    $content = do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames );
     225
     226    $pattern = get_shortcode_regex( $tagnames );
     227    $content = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $content );
     228
     229    // Always restore square braces so we don't break things like <!--[if IE ]>.
     230    $content = unescape_invalid_shortcodes( $content );
     231
     232    return $content;
    233233}
    234234
     
    300300
    301301/**
    302  * Regular Expression callable for apply_shortcodes() for calling shortcode hook.
     302 * Regular Expression callable for do_shortcode() for calling shortcode hook.
    303303 *
    304304 * @see get_shortcode_regex() for details of the match array contents.
  • trunk/src/wp-includes/widgets/class-wp-widget-text.php

    r54248 r54319  
    245245        /*
    246246         * Suspend legacy plugin-supplied do_shortcode() for 'widget_text' filter for the visual Text widget to prevent
    247          * shortcodes being processed twice. Now apply_shortcodes() is added to the 'widget_text_content' filter in core itself
     247         * shortcodes being processed twice. Now do_shortcode() is added to the 'widget_text_content' filter in core itself
    248248         * and it applies after wpautop() to prevent corrupting HTML output added by the shortcode. When do_shortcode() is
    249          * added to 'widget_text_content' then apply_shortcodes() will be manually called when in legacy mode as well.
     249         * added to 'widget_text_content' then do_shortcode() will be manually called when in legacy mode as well.
    250250         */
    251251        $widget_text_do_shortcode_priority       = has_filter( 'widget_text', 'do_shortcode' );
     
    303303            /*
    304304             * Manually do shortcodes on the content when the core-added filter is present. It is added by default
    305              * in core by adding apply_shortcodes() to the 'widget_text_content' filter to apply after wpautop().
     305             * in core by adding do_shortcode() to the 'widget_text_content' filter to apply after wpautop().
    306306             * Since the legacy Text widget runs wpautop() after 'widget_text' filters are applied, the widget in
    307              * legacy mode here manually applies apply_shortcodes() on the content unless the default
     307             * legacy mode here manually applies do_shortcode() on the content unless the default
    308308             * core filter for 'widget_text_content' has been removed, or if do_shortcode() has already
    309309             * been applied via a plugin adding do_shortcode() to 'widget_text' filters.
     
    313313                    $text = shortcode_unautop( $text );
    314314                }
    315                 $text = apply_shortcodes( $text );
     315                $text = do_shortcode( $text );
    316316            }
    317317        }
Note: See TracChangeset for help on using the changeset viewer.