删除WordPress帖子中的<p>和<br/>标签</p>

时间:2011-07-08 13:53:46

标签: wordpress

每当我在WordPress帖子页面发布一些内容时,它都会显示一些段落标记,如<p><br/>。这显示了输出中的一些额外空间。那有什么解决方案吗?如何删除所有标签?

10 个答案:

答案 0 :(得分:102)

这是因为WordPress的wpautop。 只需在主题的functions.php文件

中添加以下代码行

remove_filter( 'the_content', 'wpautop' );

remove_filter( 'the_excerpt', 'wpautop' );

有关详细信息:http://codex.wordpress.org/Function_Reference/wpautop

答案 1 :(得分:2)

试试这个

$my_postid = $post->ID;
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = strip_tags($content, '<p><br/>');
echo $content;

答案 2 :(得分:2)

我不建议使用remove_filter选项,因为它会删除您在模板中调用它们的所有位置的标记和标记。

最好的方法是通过PHP清理你的字符串

你可以使用php函数strip_tags来删除无用的标记: echo strip_tags(get_the_excerpt()); // Get the raw text excerpt from the current post

echo strip_tags(category_description()); // Get the raw text cat desc from the current cat page

这将在调用时删除当前wordpress帖子中的所有HTML标记。

您还可以在以下情况下添加修剪功能: echo trim(strip_tags(get_the_excerpt())); // Get the raw text excerpt from the current post

echo trim(strip_tags(category_description())); // Get the raw text cat desc from the current cat page

这对于获取meta =&#34;描述&#34;的原始文本是完美的。和标题,不建议使用HTML标记。

希望有所帮助

答案 3 :(得分:1)

删除wpautop过滤器不是最灵活的解决方案。 如果您正在寻找逐页解决方案或邮寄帖子,您可以使用此插件:

https://wordpress.org/plugins/dont-muck-my-markup/

它会在每个帖子/页面上添加一个复选框,供您选择是否对该特定页面禁用core-Wordpress行为。

当您想要发布一些HTML代码并且自动生成的<br><p>搞砸了您精心设计的设计时,这非常有用。

该插件还有一个全局选项,因此您可以在所有页面/帖子上默认关闭此行为。

另一个插件是https://wordpress.org/plugins/preserve-code-formatting/但是我只尝试了我描述的插件。

答案 4 :(得分:0)

使用此代码在编辑器初始化之前删除 <p></p>

function tinymce_remove_root_block_tag( $init ) {
    $init['forced_root_block'] = false; 
    return $init;
}
add_filter( 'tiny_mce_before_init', 'tinymce_remove_root_block_tag' );

答案 5 :(得分:0)

使用它  $ editor = wp_filter_nohtml_kses($ _ POST [&#39; editor1&#39;]);

答案 6 :(得分:0)

由于此处接受的答案在WP 4.8.1中对我没有用,我发布了一个对我有用的解决方法。我只需要在p中添加一个类,而WordPress不会删除它。

<p class="whatever">

答案 7 :(得分:0)

默认情况下,WordPress将<p></p>标记添加到类别描述中。为此,请将以下内容添加到您的 functions.php 文件

// Remove p tags from category description
remove_filter('term_description','wpautop');

简单易用(无代码)。

谢谢

答案 8 :(得分:-1)

有时在主题的functions.php中删除WordPress的wpautop函数不起作用(出于某些原因)。

所以我有另一个解决方案,如何停止删除<br>代码或双(<br><br>)换行符。

  1. 对文件/wp-content/themes/your_theme_name/functions.php
  2. 进行更改

    在功能的顶部添加2行。

    remove_filter('the_content', 'wpautop');
    remove_filter('the_excerpt', 'wpautop');
    

    这将最初关闭wpautopop功能。

    1. 在功能/wp-includes/formatting.php中对文件wpautop进行更改。

      A)将function wpautop( $pee, $br = true)更改为function wpautop( $pee, $br = false)

      这将另外关闭所有地方的wpautopop功能。

      B)将$pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee);更改为

      $pee1 = $pee;
      $pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee);
      $pee = $pee1;
      

      这将阻止系统删除双<br>标记。 (我知道代码很奇怪,但由于//$pee标记,简单?>在这里没有帮助。

      C)将$pee = preg_replace("/\n\n+/", "\n\n", $pee);更改为//$pee = preg_replace("/\n\n+/", "\n\n", $pee);

      这将阻止系统删除多个换行符。

      D)改变这个:

      $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
      

      到那个:

      //$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
      

      这将阻止系统在打开之后或关闭块元素标记之前删除换行符,例如<div><article>等。

      E)改变这个:

      $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
      

      到那个:

      //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
      

      完全相同:这会阻止系统在打开之后或关闭块元素标记之前删除换行符,例如<div><article>等。

      F)改变这个:

      $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
      

      到那个:

      // $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
      

      这将阻止系统在块结束时删除<br>

      G)改变这个:

      $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
      

      到那个:

      //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
      

      这将阻止系统在打开或关闭块标记后删除<br>

    2. 希望它会有所帮助!并阅读此文件中的评论 - 它们将帮助您了解打开或关闭所需的内容。

答案 9 :(得分:-1)

如果您要删除Wordpress帖子或textarea中的p标签而不更改功能,可以执行以下简单的css-trick: css:

.container >p {
display:none;
}

html:

<div class = 'container'>
<!the p tag u dont want here!>
</div>