每当我在WordPress文章页面发布一些内容时,它会显示一些像<p>
和<br/>
这样的段落标签。这将在输出中显示一些额外的空间。那么有没有解决方法?如何删除所有标签?
每当我在WordPress文章页面发布一些内容时,它会显示一些像<p>
和<br/>
这样的段落标签。这将在输出中显示一些额外的空间。那么有没有解决方法?如何删除所有标签?
wpautop
引起的。只需在主题的functions.php文件中添加下面这行代码即可:
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
我不建议使用remove_filter选项,因为它会在您调用模板中的所有标记和标记时删除它们。
最好的方法是通过PHP对字符串进行清理
您可以使用php函数strip_tags来删除无用的标记:
echo strip_tags(get_the_excerpt()); // 从当前文章中获取原始文本摘要
或者
echo strip_tags(category_description()); // 从当前分类页获取原始文本cat desc
这将在调用当前wordpress文章时从中删除所有HTML标记。
您还可以添加trim函数以防万一:
echo trim(strip_tags(get_the_excerpt())); // 从当前文章中获取原始文本摘要
或者
echo trim(strip_tags(category_description())); // 从当前分类页获取原始文本cat desc
这很适合获取meta =“description”和title的原始文本,在这些地方不推荐使用HTML标记。
希望有所帮助
$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;
移除wpautop
过滤器并不是最灵活的解决方案。如果您正在寻找逐页或逐篇文章的解决方案,您可以使用此插件:
https://wordpress.org/plugins/dont-muck-my-markup/
它将在每个文章/页面上添加一个复选框,供您选择是否禁用该特定页面的核心WordPress行为。`会破坏您精心设计的布局,这时它尤其有用。
<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' );
默认情况下,WordPress会在分类描述中添加段落<p></p>
标签。通过将以下内容添加到您的functions.php文件中,可以停止这种行为。
// Remove p tags from category description
remove_filter('term_description','wpautop');
简单易懂(无需编码)。
谢谢
由于这里的被接受的答案在 WP 4.8.1 中对我无效,所以我发布了一个解决方法,它对我有效。我只需要给 p 添加一个类,WordPress 就不会将其删除。
<p class="whatever">
在您的功能顶部添加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);
这将防止系统
使用以下代码: $editor = wp_filter_nohtml_kses($_POST['editor1']);
.container >p {
display:none;
}
HTML:
<div class = 'container'>
<!the p tag u dont want here!>
</div>