4

我有一个带有一些属性的自定义短代码标签,我希望能够在新行上显示其属性 - 使其对内容编辑器更具可读性:

[component
    attr1 ="value1"
    attr2 ="value of the second one"
    attr3 ="another"
    attr4 ="value"
    ...
    attrN ="valueN"]

此要求背后的原因是一些属性的内容可能非常冗长。不幸的是,wpautop()添加了一些讨厌的额外标记,像这样破坏args数组(使用 php print_r($args)):

Array ( [0] => attr1 [1] => ="value1"
/> [3] => attr2 = [4] => "value [5] => of [6] => the [7] => second [8] => one"
/> [10] => "" //...and more like this)

我试过使用属性inline

[component attr1 ="value1" attr2 ="value of the second one" ="value"... attrN ="valueN"]

并且输出如预期:

Array ( [attr1] => value1 [attr2] => value of the second one [attr3] => //...and so on)

有没有办法让属性有意图并避免破坏$args数组的额外标记?

4

1 回答 1

0

接受的答案 - 归功于@Stephen

好的,我从来没有见过以这种方式完成的短代码,所以我把一些代码放在一起来测试你的场景。并且我得到与标准简码格式工作得很好的代码相同的结果。

标准简码格式

[shortcode name1="value1" name2="value2"]

我不相信这是 wpautop() 的结果,而是解析短代码属性的方式的结果。看上面的例子,你会发现唯一的未加引号的空格用于分隔短代码和 name=>value 对(即 name 和 '=' 之间没有空格,每个 name=>value 之间只有一个空格一对)。在这种情况下,
也被认为是空白。

我还没有深入研究短代码解析的特定内部结构,所以我无法提供有关钩子或过滤器的建议,这会有所帮助。也许这里的另一个用户对此有一些想法。

如果您必须像您拥有的那样格式化您的简码,我认为您将不得不编写自定义代码来解析传递给您的简码函数的数组。所有的值都在那里,所以你应该能够将它们拼凑在一起。

另一种选择可能是为最终用户提供表单以输入值,然后在您的内容中填充短代码。

我的答案的更新

我的回答让我很烦,所以我又看了一遍。你是正确的 wpautop() 对页面的输出有影响。但我认为这不是您的短代码问题的原因。

于 2013-02-08T16:33:28.040 回答