如果您熟悉 WordPress 中帖子和页面的格式,您可能已经注意到 WordPress 使用自动插入的 <p> 标签分隔段落。但是,这有时会导致问题。好消息是……可以通过插入简单的代码片段来禁用这种自动格式化。

Wpautop 是自动用 <p> 和 </p> 括起来双换行符的函数的名称。WordPress 在所有帖子类型(帖子、页面和自定义帖子类型)中使用此功能 – 用于内容和短代码生成的文本。因此,在 WYSIWYG 编辑器中使用简码驱动的网格系统等一些编辑工作可能会有很大的问题。

禁用自动 P-tag

可以通过几个简单的步骤禁用 wpautop 过滤器。需要在您的主题的functions.php 中插入以下几行(首选子主题)。正确插入后,WordPress 不会自动将 p-tag 插入帖子和摘录。

  1. remove_filter ('the_content', 'wpautop');
  2. remove_filter ('the_excerpt', 'wpautop');

在自定义帖子类型中禁用 Wpautop

使用以下代码段禁用自定义帖子类型中的自动 p-tag:

  1. add_filter('the_content', 'disable_wpautop_cpt', 0);
  2. 功能 disable_wpautop_cpt( $content ) {
  3. 'custom_post_slug' === get_post_type() && remove_filter('the_content', 'wpautop' );
  4. 返回$内容;
  5. }

禁用 Wpautop 并列出异常

这是代码片段的增强版本,允许您列出异常(如果有):

  1. /**
  2. * 根据条件允许或删除 wpautop
  3. */
  4. 功能条件_wpautop$内容){
  5. // true = wpautop 为 ON,除非遇到任何异常
  6. // false = wpautop 关闭,除非遇到任何异常
  7. $wpautop_on_by_default = true;
  8. // 在此处列出异常(每个异常应返回 true 或 false)
  9. $异常 = 数组(
  10. is_page_template('page-example-template.php'),
  11. is_page('示例页面'),
  12. );
  13. // 检查是否遇到任何异常 // 返回 true 或 false
  14. $exception_is_met = in_array(true, $exceptions);
  15. // 返回内容
  16. 如果($wpautop_on_by_default==$exception_is_met){
  17. remove_filter('the_content','wpautop');
  18. 返回$内容;
  19. } 别的 {
  20. 返回$内容;
  21. }
  22. }
  23. add_filter('the_content', 'conditional_wpautop', 9);

删除 WordPress 已添加的空段落

将其复制粘贴到您的 functions.php 文件中(来源 –  GitHub):

  1. /**
  2. * 删除由 wpautop() 创建的空段落
  3. * @作者瑞恩汉密尔顿
  4. * @link https://gist.github.com/Fantikerz/5557617
  5. */
  6. 函数 remove_empty_p( $content ) {
  7. $content = force_balance_tags($content);
  8. $content = preg_replace( '#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content );
  9. $content = preg_replace( '~\s?<p>(\s| )+</p>\s?~', '', $content );
  10. 返回$内容;
  11. }
  12. add_filter('the_content', 'remove_empty_p', 20, 1);

使用插件禁用自动段落标签

以下是一些可用于禁用 p 标签的插件:

  1. 切换 wpautop
  2. 禁用自动 P 标签
  3. 空 P 标签