如何正确解析带换行符的短码?

时间:2016-10-13 作者:38365

我最近创建了一个自定义短代码,其中可以包含多达35个参数。这是一个复杂的项目,所以我创建短代码的部分原因是,如果我在这样的网格中键入参数,我可以很容易地看到它们:

 [shortcode paraA1=\'123\' paraB1=\'321\'
            paraA2=\'234\' paraB2=\'432\'
            paraA3=\'345\' paraB3=\'543\' ]
它工作得很好,除非我像上面那样连续键入它们,否则它将完全忽略顶部的,而只解析底部的。因此:

 [shortcode paraA1=\'123\' paraB1=\'321\'
            paraA2=\'234\' paraB2=\'432\'
            paraA3=\'345\' paraB3=\'543\' ]
 [shortcode paraA1=\'456\' paraB1=\'654\'
            paraA2=\'567\' paraB2=\'765\'
            paraA3=\'678\' paraB3=\'876\' ]
 [shortcode paraA1=\'789\' paraB1=\'987\'
            paraA2=\'890\' paraB2=\'098\'
            paraA3=\'901\' paraB3=\'109\' ]
将进行分析,就像我只键入了以下内容一样:

 [shortcode paraA1=\'789\' paraB1=\'987\'
            paraA2=\'890\' paraB2=\'098\'
            paraA3=\'901\' paraB3=\'109\' ]
源代码显示为前两个短代码甚至不存在。它还将忽略它们之间的任何代码。

但是,如果我在没有换行符的情况下键入它们(即全部内联),那么它将不会出现任何问题。例如:

 [shortcode paraA1=\'123\' paraB1=\'321\' paraA2=\'234\' paraB2=\'432\' paraA3=\'345\' paraB3=\'543\' ]
 [shortcode paraA1=\'456\' paraB1=\'654\' paraA2=\'567\' paraB2=\'765\' paraA3=\'678\' paraB3=\'876\' ]
 [shortcode paraA1=\'789\' paraB1=\'987\' paraA2=\'890\' paraB2=\'098\' paraA3=\'901\' paraB3=\'109\' ]
会很好用的。

我有多个项目在进行杀戮wpautop, 所以我很确定不是这样的。如何解决此问题,使短代码在换行时能够正确运行?

我总是只在文本编辑器中工作,而从不在可视化编辑器中工作。

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

我发现有两种变通方法:

Workaround 1: 在需要换行符的地方,可以使用任意数量的非打断空格。

所以要模仿这个:

 [shortcode paraA1=\'789\' paraB1=\'987\'
            paraA2=\'890\' paraB2=\'098\'
            paraA3=\'901\' paraB3=\'109\' ]
您可以输入:

  [shortcode paraA1=\'789\' paraB1=\'987\'                                                paraA2=\'890\' paraB2=\'098\'                                                paraA3=\'901\' paraB3=\'109\' ]
Wordpress文本编辑器将包装文本,但不会包装空格,因此结果将完全如下所示:

[短代码paraA1=\'789\'paraB1=\'987\'
paraA2=\'890\'paraB2=\'098\'
paraA3=\'901\'paraB3=\'109\']

但每一行的末尾都有空格,如果出于某种原因需要复制和粘贴,将选中空格。这将无误地运行任意数量的连续短代码。

Workaround 2: 在每个短代码之间放置内容,例如不间断空格 .

您可以这样做:

[shortcode paraA1=\'123\' paraB1=\'321\'
           paraA2=\'234\' paraB2=\'432\'
           paraA3=\'345\' paraB3=\'543\' ]  
[shortcode paraA1=\'456\' paraB1=\'654\'
           paraA2=\'567\' paraB2=\'765\'
           paraA3=\'678\' paraB3=\'876\' ]  
[shortcode paraA1=\'789\' paraB1=\'987\'
           paraA2=\'890\' paraB2=\'098\'
           paraA3=\'901\' paraB3=\'109\' ]  
它将正确解析所有的短代码。从技术上讲,这不是“连续短代码”,但在大多数情况下  不会添加任何内容显示差异。

相关推荐

SHORTCODE_ATTS()中的$ATTS参数是什么?

这个WordPress developers reference page for shortcode_atts() 国家:$atts(array)(必选)用户在shortcode标记中定义的属性。但我不理解这个定义。例如,在WP Frontend Profile 插件:$atts = shortcode_atts( [ \'role\' => \'\', ], $atts ); 据我所知,shortcode\