如何用短代码转义']'?


17

如何用短代码转义右括号?

我正在使用已编码点的Google Map插件。有时多边形中包含],这使WP认为这是简码的结尾。

例如:

[my_shortcode latitude='36.93'  longitude='-72.98' encoded_points='ortlF~g]tM?cZEH`z]}|@DQfi]' ]

我已经尝试过],这不会导致WP出现问题,但是会导致我的Google地图代码出现问题。我可以使用Regex替换],但是也许有一种更简单的方法。简码是否具有转义符?

Answers:


18

我不知道用于短码的官方转义语法,而且可能没有。

当wordpress解析简码时,它会寻找[]。如果要在短代码中使用方括号,请使用相应的html ASCII实体对其进行转义。

即替换[通过[]通过]。WordPress不会将其识别]为简码的结尾。

是否达到目的显然取决于它是否在传递给Google Maps API之前转换为]或该API是否按预期进行处理。我对此没有经验,所以不能说。


谢谢您的回答。在我的问题中,我忘了加']' 在代码块中,所以它以']'的形式出现。我已经编辑了我的问题。HTML实体适用于WP,但不适用于Google Maps。我将不得不使用Regex替换HTML实体。非常感谢你的帮助。
Laxmidi

@Laxmidi我上面的“猜测”是确定性上没有逃脱字符的边界-只是想保持谨慎,不要提供错误的信息。如果有的话,我很肯定Shortcode API上的法典文章会提到它。我认为事后替换是您最好的选择。您是否需要一个字符的正则表达式?我认为也str_replace()应该把工作做好。如果这样做的话,将减少资源消耗。
约翰内斯·皮尔2011年

1
@JohannesPille你好,这是个老歌,但我需要将[]也替换为]。第一次在WP中保存并且可以使用,但是在编辑帖子/页面WP时] 进入]。(对短代码按钮的Google事件进行跟踪时需要此功能)问候
Alex

如@alex所说,如果切换到可视选项卡并返回到代码选项卡,将会看到tinyMCE将特殊字符更改回[],然后破坏代码。
索洛·帕迪利亚


2

根据Johannes Pille的答案,有wp函数可以转义方括号,以便在shortcode参数中使用文本:

function my_esc_brackets($text = ''){
    return str_replace( [ "[" , "]" ] , [ "[" , "]" ] , $text );
}

通常,人们建议使用shortcode的$ content作为文本参数,但是在某些情况下,shortcode具有许多此类文本参数。



0

即使您不使用url,也应将urldecode(您的attribute_value)与%5B和%5D一起使用替换为attribute_value中的[和]。

您的代码可能如下所示:

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

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

 $origvalue=urldecode($atts['myattr']);

这将恢复$ origvalue中的[和]字符,因此$ origvalue现在包含: [myattribute_value]

提示:如果您使用的是url,请执行相同的操作,但是将以下内容添加到功能代码中:

$urlvalue = urlencode($origvalue);

如果尚不清楚:是,我正在执行urlencode(urldecode($ atts的某个值))构建URL的正确部分。

很简单,希望对您有所帮助。

皮埃尔


-1

这是一个古老的问题,但这是使用CSS的解决方法。代替大括号,将字符括在一个跨度中,如下所示:

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

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

span.bracket:before {
  content: '['
}
.colored-blocks span.bracket:after {
  content: ']'
}

结果将如下所示:

[some string]


3
问题是]作为内容的一部分插入,而不是如何显示。
马克·卡普伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.