WordPress / PHP - 执行单个简码

发布于 2024-09-08 03:10:16 字数 151 浏览 3 评论 0原文

在 WP 中,您可以从字符串中过滤短代码并使用 do_shortcode($string) 执行其挂钩函数。

是否可以过滤单个短代码,而不是所有注册的短代码?

例如,我也需要一些可用于评论海报的短代码,但出于明显的原因并非全部:)

In WP you can filter shortcodes from a string and execute their hooked functions with do_shortcode($string).

Is it possible to filter a single shortcode, instead of all registered shortcodes?

for example I need a few shortcodes to be available for comment posters as well, but not all for obvious reasons :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如此安好 2024-09-15 03:10:16
function do_shortcode_by_tags($content, $tags)
{
    global $shortcode_tags;
    $_tags = $shortcode_tags; // store temp copy
    foreach ($_tags as $tag => $callback) {
        if (!in_array($tag, $tags)) // filter unwanted shortcode
            unset($shortcode_tags[$tag]);
    }

    $shortcoded = do_shortcode($content);
    $shortcode_tags = $_tags; // put all shortcode back
    return $shortcoded;
}

其工作原理是过滤全局 $shortcode_tags,运行 do_shortcode(),然后将所有内容恢复原样。

使用示例;

$comment = do_shortcode_by_tags($comment, array('tag_1', 'tag_2'));

这会将短代码 tag_1tag_2 应用于评论。

function do_shortcode_by_tags($content, $tags)
{
    global $shortcode_tags;
    $_tags = $shortcode_tags; // store temp copy
    foreach ($_tags as $tag => $callback) {
        if (!in_array($tag, $tags)) // filter unwanted shortcode
            unset($shortcode_tags[$tag]);
    }

    $shortcoded = do_shortcode($content);
    $shortcode_tags = $_tags; // put all shortcode back
    return $shortcoded;
}

This works by filtering the global $shortcode_tags, running do_shortcode(), then putting everything back as it was before.

Example use;

$comment = do_shortcode_by_tags($comment, array('tag_1', 'tag_2'));

This will apply the shortcode tag_1 and tag_2 to the comment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文