shortcode_unautop()
在里面/wp-includes/formatting.php
应该在文本块中找到短代码,并从中删除换行段落标记。
在这个过程中,我一直对段落标记存在问题。
以下是var_dump($pee)
, 我将其放在函数的最开头,即处理前的字符串:
string(353) "<p>[row wrap="true"]</p>
<p>[one_half]</p>
<p>[text_block]Fusce blandit adipiscing libero, nec bibendum diam volutpat tempor.[/text_block]</p>
<p>[/one_half]</p>
<p>[one_half last="true"]</p>
<p>[text_block]Donec fermentum diam leo, ut convallis nisl tristique ut. Ut rhoncus leo vitae tempus pulvinar.[/text_block]</p>
<p>[/one_half]</p>
<p>[/row]</p>
"
如预期的那样,全部包装在段落标记中。
然后我把var_dump(preg_replace( $pattern, \'$1\', $pee ));
函数结束前,给出:
string(346) "[row wrap="true"]</p>
<p>[one_half]</p>
<p>[text_block]Fusce blandit adipiscing libero, nec bibendum diam volutpat tempor.[/text_block]</p>
<p>[/one_half]</p>
<p>[one_half last="true"]</p>
<p>[text_block]Donec fermentum diam leo, ut convallis nisl tristique ut. Ut rhoncus leo vitae tempus pulvinar.[/text_block]</p>
<p>[/one_half]</p>
<p>[/row]
"
它所做的只是从整个块中删除开始和结束标记,而不是每个单独的短代码。我检查了
global $shortcode_tags;
我示例中的所有短代码都在其中。
功能是否已损坏,或者我是否对其期望过高?我很确定我没有,而且它应该删除所有段落标记-但我忍不住想还有其他事情在发生,比如意外的空格字符或其他东西。