为什么文本编辑器中的多个换行符停止工作?

时间:2016-05-11 作者:STing

# Adds ability to add break tags on posts
remove_filter( \'the_content\', \'wpautop\' );
remove_filter( \'the_excerpt\', \'wpautop\' );

add_filter( \'the_content\', \'nl2br\' );
add_filter( \'the_excerpt\', \'nl2br\' );
多年来,我们在自定义插件中都有上述代码,这使得break标记能够正常工作。

嗯,它仍然有效。除非多个换行符不起作用。我们可以在一行中放置50个打断标记,文本将直接转到下一行。问题是我们需要复制/粘贴大量的直接html,而间距是使用break标记完成的。

那么,为什么从4.4开始,这个功能就停止了呢。最新版本为4.5。最近的更重要的是,我能做些什么让tinymce只看那里有什么!!??此外,我还尝试使用高级TinyMCE小部件并显示段落/分隔符。。。这同样有效,但不适用于多个。(是的,我知道人们之间可以有一个不间断的空间来展示这条线——这将涉及我们的大量工作,而且是真正的犹太人区)

2 个回复
SO网友:Mark Kaplun

从评论来看,问题似乎与某些插件的错误行为有关。

SO网友:sMyles

您何时调用代码来删除和添加新过滤器?您可以尝试以更高的优先级调用它们(如果您是从另一个钩子调用它们)。

很可能是由于另一个插件或主题在上进行了自己的替换the_content ... 无论是调用wpautop本身还是删除nl2br 滤器

如果它正在为nl2br 您可以调用自己的函数:

add_filter( \'the_content\', \'myown_nl2br\' );
add_filter( \'the_excerpt\', \'myown_nl2br\' );

function myown_nl2br($string) { 
    $string = str_replace(array("\\r\\n", "\\r", "\\n"), "<br />", $string); 
    return $string; 
} 
换行符参考:

您也可以调用nl2br() 在上述函数中,但使用str_replace 让您了解它的工作原理和技术nl2br() 仅插入a<br/> 在换行符之前,实际上不会删除换行符本身。

<小时>

Tracking down the culprit:

对整个wp-content 的目录the_content, 并查找删除、添加过滤器的任何匹配项。还可以搜索nl2brwpautop, 这应该有助于追查罪犯。

如果由于某种原因,您找到的插件或主题具有对类对象方法的回调,则标准remove_filter 将不起作用,下面是对另一个问题的回答,我在其中发布了代码,以在您无权访问类对象时删除过滤器:

https://wordpress.stackexchange.com/a/239431/51201

相关推荐

元框中的WP_EDITOR可视选项卡不显示内容

如果单击“文本”选项卡,您可以看到内容,但当切换回“视觉”选项卡时,它不会显示任何内容。它也不是白色背景上的白色文本。。。它只是没有内容。该功能在其他情况下工作。我可以通过文本选项卡输入或更改内容,这很有效。但它从不在可视选项卡中显示内容。我禁用了所有插件并切换到2020主题,在本地机器上运行Wordpress 5.6,结果相同。以下是我的测试代码:add_action(\'admin_init\', \'custom_editor_meta_box\'); function custom_edi