Shortcode conflicts

时间:2019-08-23 作者:Ivijan Stefan Stipić

我的插件提供如下短代码:

[cfgeo return="city"] - 返回城市名称

[cfgeo include="us"]Text only seen in the US country[/cfgeo] - 仅从美国的访问者返回此文本。

如果我在内容中放置短代码,如下所示:

<div>[cfgeo return="city"]</div>

<div>[cfgeo include="us"]Text only seen in the US country[/cfgeo]</div>
WordPress出错并按如下方式进行分析:

<div>[cfgeo return="city"]</div><div>[cfgeo include="us"]Text only seen in the US country[/cfgeo]<div>
这意味着短代码的第一个chortcode和闭合状态之间的所有内容都被解析为一个大的短代码。

[cfgeo return="city"]EVERYTHING INSIDE[/cfgeo]
这是一个错误。

我如何避免这种情况?

1 个回复
最合适的回答,由SO网友:Mike Baxter 整理而成

定义短代码时,可以尝试使用几个“if”语句中的一个来解决此问题,直到有时间创建单独的短代码为止。

function cfgeo_shortcode( $atts, $content = "" ) {
    if (!isset($content) || stristr($content,\'cfgeo\')!==FALSE){
        // do short shortcode stuff here

    } else {
        // do \'Container\' shortcode stuff here

    }
    return $output;
}
add_shortcode( \'cfgeo\', \'cfgeo_shortcode\' );
我还建议。。。创建替换短代码时,不仅应创建单独的代码,还应避免在参数的各自名称中使用“return”和“include”等关键字。

祝你好运希望这有帮助。

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默