How does a shortcode work?

时间:2017-06-24 作者:Mohamed Omar

我知道如何使用短代码,甚至制作它们,但我需要了解的是,短代码是作为帖子内容存储在数据库中的纯文本,所以像这样的纯文本如何转换为动态文本。

我想知道的是x 在服务器将文本发送到浏览器以使其正常工作之前,是否可以处理文本?

2 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

使用时the_content(), WordPress将运行多个过滤器来处理来自编辑器的文本。这些过滤器在将内容发送到浏览器之前对其进行处理。do_shortcode 是处理短代码的筛选器。

从…起/wp-includes/default-filters.php:

// Shortcodes
add_filter( \'the_content\', \'do_shortcode\', 11 ); // AFTER wpautop()
do_shortcode() 用于搜索短代码的内容,并通过其挂钩过滤短代码。

您可以应用do_shortcode 筛选到任何字符串。例如,如果您有一个带有文本区域的元框,并且希望允许用户在文本区域中输入短代码,则可以将do_shortcode 过滤以处理该问题。

A shortcode example:

[my-shortcode param1=something param2=value]Text...[/my-shortcode]
当WordPress在内容中找到此短代码时,它将运行与短代码标记关联的功能my-shortcode.

/**
 * An example shortcode.
 *
 * @param array $atts
 * @param string $content
 * @param string $tag Shortcode tag
 * @return string
 */
add_shortcode( \'my-shortcode\', \'wpse_example_shortcode\' );
function wpse_example_shortcode( $atts, $content = \'\', $tag ) {
    $a = shortcode_atts( [
            \'param1\' => false,
            \'param2\' => false,
    ], $atts );

    // code...

    return $content . \'!!!\';
}
在这种情况下,WordPress将运行该函数wpse_example_shortcode() 通过$atts (参数及其值,例如param1、param2),$content文本…),以及$tag (使用的快捷码标记,my-shortcode).

有效的短码(包括它们的参数和内容)将替换为它们关联的回调函数的输出。将像在后端输入一样输出无效的短代码。

SO网友:birgire

这里有一点提示:

短代码的API围绕preg_replace_callback 在这里,我们使用我们的短代码定义定义自定义回调。

文本中的短代码使用复杂的正则表达式模式进行解析,您可以在get_shortcode_regex().

随着我们对细节的安排,这个核心的实现变得更加复杂;-)

结束

相关推荐

php code to shortcode

这是我的php代码:<?php global $royal_profile;?> <div class=\"profile-img\" data-key=\"profilepicture\"> <?php echo get_avatar( get_current_user_id(), 64 ); ?> </div> 然后,我尝试将其转换为一个短代码(以便我可以在菜单中使用,因为我意识到我不能简