每当我在WordPress帖子页面发布一些内容时,它都会显示一些段落标记,如<p>
和<br/>
。这显示了输出中的一些额外空间。那有什么解决方案吗?如何删除所有标签?
答案 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>
)换行符。
/wp-content/themes/your_theme_name/functions.php
在功能的顶部添加2行。
remove_filter('the_content', 'wpautop');
remove_filter('the_excerpt', 'wpautop');
这将最初关闭wpautopop
功能。
在功能/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>
。
希望它会有所帮助!并阅读此文件中的评论 - 它们将帮助您了解打开或关闭所需的内容。
答案 9 :(得分:-1)
如果您要删除Wordpress帖子或textarea中的p标签而不更改功能,可以执行以下简单的css-trick: css:
.container >p {
display:none;
}
html:
<div class = 'container'>
<!the p tag u dont want here!>
</div>