在帖子中循环?我想删除后端实际发布的HTML/内容中多余的换行符

时间:2018-10-12 作者:BruceWayne

我有很多我们创建的帖子,但不幸的是有很多空白。这是我在后端实际帖子中看到的一个示例:

<h1>This is a post title</h1>

&nbsp;



&nbsp;

Words here. More words.

&nbsp;

&nbsp;




Words down here.
所以,当它呈现在前端的页面上时,我想去掉额外的换行符。

有没有办法循环浏览后端的实际帖子?然后我可以(以某种方式)检查2条以上的空行和/或&nbsp;, 并将其移除。

或者-一个症状的解决方案,而不是问题-我会更好地使用CSS删除这些行吗?

2 个回复
最合适的回答,由SO网友:Rick Hellewell 整理而成

因为空间周围没有标签&nbsp; 字符,它们将在页面输出上被压缩。

因此,视觉输出不会受到影响。对数据库或帖子内容处理的影响很小。

如果你真的关心额外的东西,那么你可以the_content 要删除额外内容的筛选器&nbsp; 在内容中。但你必须小心过滤器没有取下&nbsp; 这真的需要在内容中。

这就是为什么我认为移除的努力不值得,并且可能会导致意想不到的问题。

Added

如果你真的想去掉帖子中多余的空格,那么看看答案here, 其中wp_insert_post_data 使用过滤器。该过滤器在通过编辑器保存帖子时激发。

您只需要为要替换的文本调整正则表达式。查看文本编辑模式下的示例帖子,以获取要在regex中查找的实际字符串。(Regex对amatuer来说很难,也许专家也很难,但你可以看看这个Regex测试站点来调整你的Regex,使其工作:https://regex101.com/ . 我喜欢这个网站,因为它解释了一些事情,还创建了执行Regex所需的PHP代码。)

SO网友:Liam Stewart

在主题文件中导航并查找内容的打印位置。

您将查找类似以下内容的代码行:

the_content();
将其替换为:

$content = get_the_content(); //grabs the content
$content = apply_filters(\'the_content\', $content); //adds edit filter
$content = str_replace(\'<p>&nbsp;</p>\', \'\', $content); //replaces line break
echo $content; //prints content
它将删除的所有实例<p>&nbsp;</p> 使用空字符串。这只会在前端进行更改,而不会实际更改您的帖子在数据库中的保存方式。

结束

相关推荐

Separate First Post Loop

我正在尝试使用<?php rewind_posts(); ?> 在我的主页模板上使用两个循环的功能。有人知道如何停止最新帖子后的第一个循环吗?这是我的代码:<?php if (have_posts()) : while (have_posts()) : the_post(); ?> <h1><a href=\"<?php the_permalink(); ?>\"><