wordrpess中wpautop函数的使用及禁用

文章目录

今天在使用短代码的时候老是遇到一个问题:就是 WordPress 会自动在 shortcode 内添加 br 或者 p 标签,这样打乱了原先预想的 HTML 结构和布局。造成这个问题的原因是 WordPress 默认的日志内容处理流程中,wpautop(将回车转换成 p 或者 br 标签的函数)是在 Shortcode 前面运行的。先来简单介绍下wpautop函数,然后讲解如何解决这个问题。

wpautop函数简介

将文本中的两个换行符转换成 HTML 段落 (< p>…< /p>),其余的换行转换成 < br />

WordPress 使用这个函数对日志内容和摘要进行格式化处理。

 wpautop函数用法

1
<?php wpautop( $foo, $br ); ?>

$foo
(string) (required) 将格式化的文本。
Default: 无
$br
(boolean or integer) (optional) 保留换行符,当设置为 true ,段落转换完成之后余下的换行符将转换成 <br />
HTML 标签,script 和 style 后面的换行符不受影响。
Default: 1

wpautop函数实例

1
2
3
4
5
6
7
8
9
10
<?php
$some_long_text = <<<TXT
Some long text
that has many lines
 
and paragraphs in it.
TXT;
 
echo wpautop($some_long_text);
?>

输出结果

1
2
3
<p>Some long text<br/>
that has many lines</p>
<p>and paragraphs in it.</p>

wpautop函数的禁用与调整

为了解决shortcode的问题,我们可以调整wpsutop函数的执行顺序,在在当前主题的 functions.php 文件中添加:

1
2
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);

这样调整顺序之后, shortcode 里面的内容,就不会有自动添加的 p 或者 br 标签,但是如果 shortcode 中部分的内容又需要一些 p 或者 br 标签用来换行的话,可以自己在 shortcode 处理程序中添加 wpautop 来处理了。

1
2
3
4
5
function bio_shortcode($atts, $content = null) {
   $content = wpautop(trim($content));
   return '<div class="bio">' . $content . '</div>';
}
add_shortcode('bio', 'bio_shortcode');

小结

以上内容参考了我爱水煮鱼的文章,针对自己遇到的问题进行了解决,后面还会讲解shortcode的使用。

本文出自 TENNFY博客,转载时请注明出处及相应链接。

本文永久链接: https://www.tennfy.com/1009.html

下一篇文章:

上一篇文章:

3人参与了讨论

  1. 不给个feed让我订阅么?用邮件不方便订阅吧。我自建RSS服务器来订阅的。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

3 + 2 = ?


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

返回顶部