【问题标题】:Escaping multiline wordpress shortcodes转义多行 wordpress 简码
【发布时间】:2014-10-18 00:11:38
【问题描述】:

如何转义多行 wordpress 简码?

[accordion_item title="Item 2"]
item content
[/accordion_item]

我们可以使用双括号,但是“/”符号会破坏一切。不敢相信 WP 家伙输掉了这个案子(

[[accordion_item title="Item 3"]]
item content
[[accordion_item]]

这可行,但下面的代码没有正确转义

[[accordion_item title="Item 3"]]
item content
[[/accordion_item]]

不想用 html 代码手动替换括号。 (用户将编辑器模式切换到可视化后,WP 会自动将它们取回)

提前致谢。

【问题讨论】:

    标签: wordpress shortcode


    【解决方案1】:

    shortcodes.php 中的函数 get_shortcode_regex() 使所有逻辑都通过转义短代码解析(捕获组 1 和 5)

    例如 [[new_something my_attr="test"]And have content!! [vc_tabs][/vc_tabs][/new_something]] 在 preg_match_all 之后你会得到 第一个捕获组不是空的,它是“[”(所以你可以知道这个短代码不是用于渲染)

    第二个捕获组将显示短代码名称“new_something”

    第三个捕获组将显示属性" my_attr="test""中的所有内容

    四个捕获组将显示内容And have content!! [vc_tabs][/vc_tabs]

    五个捕获组将显示转义字符已结束。

    基本上这意味着当你这样写转义时所有信息都是已知的:[[your_shortcode]content[/your_shortcode]]

    【讨论】:

      【解决方案2】:

      答案:将 [ 替换为 [ 和 ] 替换为 ]

      链接:https://wordpress.stackexchange.com/questions/33960/how-do-i-escape-a-in-a-short-code

      旁注:

      Wysiwyg 文本转换导致 html 编码是,而且总是一个问题。我建议大家一起安装可视化编辑器!

      【讨论】:

      • 感谢您的回答,但正如我所写,我正在尝试寻找另一种解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多