基本短码-为什么第一段没有用p标记括起来,而第二段是

时间:2014-03-06 作者:gstricklind

我正在开发一个基本插件,为列、按钮、面板等添加短代码。这里没有什么新鲜事。无论如何,我没有改变wpautop;我试着删除它并推迟它-没有变化。所使用的所有短代码的情况是,第一段没有包装在p标记中(p标记实际上直接出现在第一段之后,并且为空),但同一短代码中第一段之后的所有段落都包装在p标记中。我需要弄清楚为什么第一段没有包装好。

功能:

function vc_shortcode_panel($atts, $content = null) {
  extract( shortcode_atts( array(
    \'type\' => \'\'
  ), $atts) );
 return \'<div class="panel \' . $type . \'">\' . do_shortcode( trim($content) ) . \'</div>\';
 }
add_shortcode(\'panel\', \'vc_shortcode_panel\');
短代码:

[panel type=""]paragraph 1

paragraph 2[/panel]
输出如下所示:

<div class="panel">
  paragraph 1
  <p></p>
  <p>paragraph 2</p>
</div>
我知道如果我在[面板]和第一段之间添加一个换行符,那么它会将第一段包装在一个p标记中。但是,短代码不需要换行符就可以正确格式化吗?我做错了什么?谁能告诉我为什么会这样?

1 个回复
SO网友:bosco

这实际上是the wpautop() function\'的预期目的。抄本:

将文本中的双线分隔符更改为HTML段落(<p>...</p>).

请注意the example provided in the Codex 为此,显式使用以换行符开头的字符串:

<?php
$some_long_text = // Start Text
Some long text
that has many lines

and paragraphs in it.
// end text

echo wpautop($some_long_text);
?>
上述结果产生以下标记:

<p>Some long text<br/>
that has many lines</p>
<p>and paragraphs in it.</p>
此功能背后的原因是HTML标记中的双线分隔符被解释为通用空格,并在DOM中呈现为单线分隔符。为了正确显示双线分隔符,您必须插入<br /> 元素或使用默认的段落元素样式,这就是WordPress所做的。

因为示例的第一行不包含换行符、段落或<br /> 添加元素,因为不需要保留换行符格式。

请参见wpautop() function\'s source 为了准确实施。

结束

相关推荐

How do I make a shortcode?

边走边学。。。我已经构建了这个功能,但我需要它作为一个短代码。我该怎么做?$args = array( \'taxonomy\' => \'product_cat\' ); $terms = get_terms(\'product_cat\', $args); $count = count($terms); $i=0; if ($count > 0) { $cape_list = \'<p class=\"my_term-archive\