搜索内容以获取短代码并通过其挂钩过滤短代码。
原型
do_shortcode( string $content, bool $ignore_html = false )
描述
如果没有定义短代码标签,则将返回内容而不进行任何过滤。这可能会导致插件被禁用时出现问题,但短代码仍将显示在帖子或内容中。
参数
$content
(string)
(Required)
要搜索短代码的内容。
$ignore_html
(bool)
(Optional)
如果为true,则将跳过HTML元素中的短代码。
返回值
(string)
过滤掉短代码的内容。
源文件
路径:wp-includes/shortcodes.php
<?php
...
function do_shortcode( $content, $ignore_html = false ) {
global $shortcode_tags;
if ( false === strpos( $content, '[' ) ) {
return $content;
}
if (empty($shortcode_tags) || !is_array($shortcode_tags))
return $content;
// Find all registered tag names in $content.
preg_match_all( '@[([^<>&/[]x00-x20=]++)@', $content, $matches );
$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
if ( empty( $tagnames ) ) {
return $content;
}
$content = do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames );
$pattern = get_shortcode_regex( $tagnames );
$content = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $content );
// Always restore square braces so we don't break things like <!--[if IE ]>
$content = unescape_invalid_shortcodes( $content );
return $content;
}
...
?>
其他
英文文档:https://developer.wordpress.org/reference/functions/do_shortcode/