如何在短代码中转义‘]’?

时间:2011-11-17 作者:Laxmidi

如何在短代码中转义右括号?

我正在开发一个带有编码点的谷歌地图插件。有时多边形中有“]”,这使WP认为这是短代码的结束。

例如:

[my_shortcode latitude=\'36.93\'  longitude=\'-72.98\' encoded_points=\'ortlF~g]tM?cZEH`z]}|@DQfi]\' ]
我试过了] 这并没有给WP带来问题,但却给我的谷歌地图代码带来了问题。我可以使用Regex替换];,但也许有一种更简单的方法。短代码是否有转义字符?

6 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

我不知道短代码的官方转义语法,很可能没有。

当wordpress分析短代码时,它会查找短代码。如果要在短代码中使用方括号,请使用相应的html ASCII entities 逃离他们。

一、 e.替换为[]. Wordpress无法识别] 作为短代码的结尾。

这是否符合您的目的,显然取决于它是否在传递到Google Maps API之前转换为。我没有这方面的经验,所以不能说。

SO网友:Guillaume Husta

这里似乎有一个官方页面:Escaping Shortcodes

摘录:

要做到这一点,您需要使用两组括号而不是一组括号来避开短代码。因此,要在您的帖子中显示此内容:

[图库]

你可以这样写:

[[图库]]

SO网友:DocSS

根据Johannes Pille的回答,在短码参数中使用文本时,有一个wp函数可以逃逸方括号:

function my_esc_brackets($text = \'\'){
    return str_replace( [ "[" , "]" ] , [ "[" , "]" ] , $text );
}
通常,人们建议使用shortcode的$内容作为文本参数,但有时shortcode有许多这样的文本参数。

SO网友:Pierre13fr

即使您没有使用url,use urldecode(your attribute_value) with %5B and %5D 用于替换attribute\\u值中的[和]。

您的代码可能如下所示:

在您的wp页面中:[my_shortcode myattr="%5Bmyattribute_value%5D"]

然后,在shortcode函数中,只需执行以下操作:

 $origvalue=urldecode($atts[\'myattr\']);
这将恢复$origvalue中的[和]字符,以便$origvalue现在包含:[myattribute_value]

提示:如果您正在使用url,请执行相同的操作,但在函数代码中添加以下内容:

$urlvalue = urlencode($origvalue);
如果不清楚的话:是的,我正在进行urlencode(urldecode(来自$atts的一些值))来构建url的正确部分。

很简单,希望这有帮助。

皮埃尔

SO网友:Picard

最简单的解决方案-如果只有一个属性需要转义,则在打开/关闭标记版本中使用短代码,如下所示:

[my_shortcode latitude=\'36.93\'  longitude=\'-72.98\']ortlF~g]tM?cZEH`z]}|@DQfi][/my_shortcode]
然后你得到了有问题的内容作为第二个参数$content (第一个是$attr).

您可以检查the documentation 了解更多信息。

SO网友:yitwail

这是一个老问题,但这里有一个使用css的解决方法。将字符括在span中以代替大括号,如下所示:

<span class="bracket">some string</span>

然后,将其添加到主题样式表中:

span.bracket:before {
  content: \'[\'
}
.colored-blocks span.bracket:after {
  content: \']\'
}
结果如下所示:

[some string]

结束

相关推荐

DO_ShortCode()不执行快捷码;)

想象一下函数中的这个基本短代码。php文件:function div_shortcode( $atts ) { return \'<div class=\"div\"></div>\'; } add_shortcode(\'div\', \'div_shortcode\'); 所以每[div] 在Wordpress编辑器中<div class=\"div\"></div>.一切看起来都很好,对吗?现在麻烦来了