Wpautop()当短码属性在换行符上时,将参数数组换行

时间:2012-11-06 作者:Luca

我有一个带有几个属性的自定义快捷码标记,我希望能够在新行上显示其属性,以使内容编辑器更易于阅读:

[component
    attr1 ="value1"
    attr2 ="value of the second one"
    attr3 ="another"
    attr4 ="value"
    ...
    attrN ="valueN"]
此要求背后的原因是,一些属性的内容可能非常冗长。不幸地wpautop() 添加一些令人讨厌的额外标记,以破坏$atts 类似这样的数组(使用phpprint_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
}
然后,我使用这些提取的变量填充另一个数组

1 个回复
最合适的回答,由SO网友:Steve 整理而成

好的,我从未见过这样做的短代码,所以我收集了一些代码来测试您的场景。我用代码得到了相同的结果,这些代码可以很好地使用标准的短码格式。

Standard Shortcode Format

[短代码名称1=“value1”名称2=“value2”]

我认为这不是wpautop()的结果,而是分析快捷码属性的方式的结果。看看上面的示例,您将看到只有未加引号的空格用于分隔短代码和名称=>值对(即名称和“=”之间没有空格,每个名称=>值对之间只有一个空格)。在这种情况下<br/> 也被视为空白。

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

如果您必须像现有的那样格式化您的短代码,我认为您必须编写自定义代码来解析传递给您的短代码函数的数组。所有的值都存在,因此您应该能够将它们重新组合在一起。

另一个选项可能是提供一个表单,供最终用户输入值,然后在内容中填充快捷码。

An update to my answer

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

结束

相关推荐

no content after shortcode

我希望你们能帮我解决我遇到的这个小错误。我正在使用一个快捷码在条目中显示音频播放器。这是我在函数中输入的代码。php:function html5_audio($atts, $content = null) { extract(shortcode_atts(array( \"src\" => \'\', \"preload\"=> \'none\', \"loop\" => \'\' ), $atts)); retu