似乎wordpress正在无缘无故地创建空p标签。我通常通过摆脱所有空白来纠正这个问题 - 因为白色空间似乎被解释为“P TAG HERE!PLACE A P TAG HERE”。
以下是我关注的Wordpress仪表板内容:
[block]<p>This is a test</p>[/block]
正如你所看到的,没有空格。
这是同一段html的HTML表示。
<div class="block sidebar">
<p>This is a test</p>
<p></p></div>
看到第二个<p></p>
无缘无故?
有人可以告诉我为什么会这样,以及如何(如果有的话)我可以纠正这种情况?
我也创建了短代码[block]
,并且已经在其他页面上使用它而没有这个问题。因此它似乎特定于页面(因为这有意义......不是。)
非常感谢任何帮助。如有必要,我可以提供指向该页面的链接。让我知道。
仪表板的外观如何:
答案 0 :(得分:1)
将此添加到您的functions.php中,它将解决问题
add_filter('the_content', 'shortcode_empty_paragraph_fix');
function shortcode_empty_paragraph_fix($content) {
$array = array(
'<p>[' => '[',
']</p>' => ']',
']<br />' => ']',
']<br>' => ']',
);
$content = strtr($content, $array);
return $content;
}
答案 1 :(得分:1)
wordpress尝试格式化代码的原因是因为一个名为wpautop的函数 https://codex.wordpress.org/Function_Reference/wpautop
我从这个帖子中找到了一个解决方案并稍微调整了一下: Wordpress - empty p tags
add_filter('the_content', 'remove_empty_p', 11);
function remove_empty_p($content){
$content = force_balance_tags($content);
//return preg_replace('#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content);
return preg_replace('#<p></p>#i', '', $content);
}
第三个参数11是优先级。对我来说,wpautop过滤器的优先级为10,所以我将我的过滤器设置为11,这解决了我的问题。
感谢所有试图提供帮助的人!