我有一个带有几个属性的自定义快捷码标记,我希望能够在新行上显示其属性,以使内容编辑器更易于阅读:
[component
attr1 ="value1"
attr2 ="value of the second one"
attr3 ="another"
attr4 ="value"
...
attrN ="valueN"]
此要求背后的原因是,一些属性的内容可能非常冗长。不幸地
wpautop()
添加一些令人讨厌的额外标记,以破坏
$atts
类似这样的数组(使用php
print_r($atts)
):
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
大堆
我用来注册短代码的函数[component]
提取如下值:
function component_func( $atts, $content = null ) {
extract( shortcode_atts( array(
\'attr1\' => \'attr1\',
\'attr2\' => \'attr2\',
\'attr3\' => \'attr3\',
), $atts ) );
// more code
}
然后,我使用这些提取的变量填充另一个数组
最合适的回答,由SO网友:Steve 整理而成
好的,我从未见过这样做的短代码,所以我收集了一些代码来测试您的场景。我用代码得到了相同的结果,这些代码可以很好地使用标准的短码格式。
Standard Shortcode Format
[短代码名称1=“value1”名称2=“value2”]
我认为这不是wpautop()的结果,而是分析快捷码属性的方式的结果。看看上面的示例,您将看到只有未加引号的空格用于分隔短代码和名称=>值对(即名称和“=”之间没有空格,每个名称=>值对之间只有一个空格)。在这种情况下<br/>
也被视为空白。
我还没有深入研究短代码解析的特定内部结构,因此我无法提供关于钩子或过滤器的建议。也许这里的另一位用户对此有一些想法。
如果您必须像现有的那样格式化您的短代码,我认为您必须编写自定义代码来解析传递给您的短代码函数的数组。所有的值都存在,因此您应该能够将它们重新组合在一起。
另一个选项可能是提供一个表单,供最终用户输入值,然后在内容中填充快捷码。
An update to my answer
我的回答有些问题困扰着我,所以我又看了一遍。您是对的,wpautop()对页面的输出有影响。但我不认为这是你的短代码问题的原因。