Make WordPress Core


Ignore:
Timestamp:
10/12/2023 12:45:49 PM (6 months ago)
Author:
audrasjb
Message:

Shortcodes: Restrict ajax handler for media shortcode.

Props tykoted, xknown, peterwilsoncc, antpb, jorbin.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/shortcodes.php

    r56273 r56838  
    167167    }
    168168    return false;
     169}
     170
     171/**
     172 * Returns a list of registered shortcode names found in the given content.
     173 *
     174 * Example usage:
     175 *
     176 *     get_shortcode_tags_in_content( '[audio src="file.mp3"][/audio] [foo] [gallery ids="1,2,3"]' );
     177 *     // array( 'audio', 'gallery' )
     178 *
     179 * @since 6.3.2
     180 *
     181 * @param string $content The content to check.
     182 * @return string[] An array of registered shortcode names found in the content.
     183 */
     184function get_shortcode_tags_in_content( $content ) {
     185    if ( false === strpos( $content, '[' ) ) {
     186        return array();
     187    }
     188
     189    preg_match_all( '/' . get_shortcode_regex() . '/', $content, $matches, PREG_SET_ORDER );
     190    if ( empty( $matches ) ) {
     191        return array();
     192    }
     193
     194    $tags = array();
     195    foreach ( $matches as $shortcode ) {
     196        $tags[] = $shortcode[2];
     197
     198        if ( ! empty( $shortcode[5] ) ) {
     199            $deep_tags = get_shortcode_tags_in_content( $shortcode[5] );
     200            if ( ! empty( $deep_tags ) ) {
     201                $tags = array_merge( $tags, $deep_tags );
     202            }
     203        }
     204    }
     205
     206    return $tags;
    169207}
    170208
Note: See TracChangeset for help on using the changeset viewer.