WordPress Version: 6.3
/**
* Determines whether the passed content contains the specified shortcode.
*
* @since 3.6.0
*
* @global array $shortcode_tags
*
* @param string $content Content to search for shortcodes.
* @param string $tag Shortcode tag to check.
* @return bool Whether the passed content contains the given shortcode.
*/
function has_shortcode($content, $tag)
{
if (!str_contains($content, '[')) {
return false;
}
if (shortcode_exists($tag)) {
preg_match_all('/' . get_shortcode_regex() . '/', $content, $matches, PREG_SET_ORDER);
if (empty($matches)) {
return false;
}
foreach ($matches as $shortcode) {
if ($tag === $shortcode[2]) {
return true;
} elseif (!empty($shortcode[5]) && has_shortcode($shortcode[5], $tag)) {
return true;
}
}
}
return false;
}