Make WordPress Core


Ignore:
Timestamp:
10/12/2023 03:15:04 PM (8 months ago)
Author:
davidbaumwald
Message:

Grouped backports to the 5.7 branch.

  • Comments: Prevent users who can not see a post from seeing comments on it.
  • Shortcodes: Restrict media shortcode ajax to certain type.
  • REST API: Ensure no-cache headers are sent when methods are overridden.
  • REST API: Limit search_columns for users without list_users.
  • Prevent unintended behavior when certain objects are unserialized.
  • Application Passwords: Prevent the use of some pseudo protocols in application passwords.

Merges [56833], [56834], [56835], [56836], [56837], and [56838] to the 5.7 branch.
Props xknown, jorbin, Vortfu, joehoyle, timothyblynjacobs, peterwilsoncc, ehtis, tykoted, martinkrcho, paulkevan, dd32, antpb, rmccue.

Location:
branches/5.7
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/5.7

  • branches/5.7/src/wp-includes/shortcodes.php

    r49963 r56886  
    161161
    162162/**
    163  * Search content for shortcodes and filter shortcodes through their hooks.
     163 * Returns a list of registered shortcode names found in the given content.
     164 *
     165 * Example usage:
     166 *
     167 *     get_shortcode_tags_in_content( '[audio src="file.mp3"][/audio] [foo] [gallery ids="1,2,3"]' );
     168 *     // array( 'audio', 'gallery' )
     169 *
     170 * @since 6.3.2
     171 *
     172 * @param string $content The content to check.
     173 * @return string[] An array of registered shortcode names found in the content.
     174 */
     175function get_shortcode_tags_in_content( $content ) {
     176    if ( false === strpos( $content, '[' ) ) {
     177        return array();
     178    }
     179
     180    preg_match_all( '/' . get_shortcode_regex() . '/', $content, $matches, PREG_SET_ORDER );
     181    if ( empty( $matches ) ) {
     182        return array();
     183    }
     184
     185    $tags = array();
     186    foreach ( $matches as $shortcode ) {
     187        $tags[] = $shortcode[2];
     188
     189        if ( ! empty( $shortcode[5] ) ) {
     190            $deep_tags = get_shortcode_tags_in_content( $shortcode[5] );
     191            if ( ! empty( $deep_tags ) ) {
     192                $tags = array_merge( $tags, $deep_tags );
     193            }
     194        }
     195    }
     196
     197    return $tags;
     198}
     199
     200/**
     201 * Searches content for shortcodes and filter shortcodes through their hooks.
    164202 *
    165203 * This function is an alias for do_shortcode().
Note: See TracChangeset for help on using the changeset viewer.