问题描述

在 WordPress 文本编辑器中添加返回时,是否有办法阻止 WordPress 自动插入<br> 标记。

我希望它的行为更像一个代码编辑器,我可以在这里编写代码,我喜欢什么,使其易于阅读。

我在编辑器中使用的代码是:

[one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third]

我想像这样构造它,这样更容易阅读和编辑:

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

但是,如果这样做会有隐形的<br> 标签添加到帖子内容会弄乱我的页面的布局。

最佳解决方案

在许多情况下,shea 的答案并不理想:

  • 你不想剥离<br>, <p> 等等的所有东西。你希望它作为 WP 视觉作曲家的默认行为,上述代码将被删除

  • 在许多情况下,它被认为是 “黑客核心”,因为这正在改变 WP 的默认核心行为 – 例如,这样的事情不会传递给 ThemeForest

我可以看到你主要有与你的问题短码。解决这个问题的正确方法是不要更改默认行为 (黑客核心),而只是过滤内容。所以只需要添加一个过滤器,并且在一个变量中传递你想要过滤的 shotrcodes 数组,就像这样:

function the_content_filter($content) {
    $block = join("|",array("one_third", "team_member"));
    $rep = preg_replace("/(<p>)?[($block)(s[^]]+)?](</p>|<br />)?/","[$2$3]",$content);
    $rep = preg_replace("/(<p>)?[/($block)](</p>|<br />)?/","[/$2]",$rep);
return $rep;
}
add_filter("the_content", "the_content_filter");

内部的内容将被过滤,因此您的短信号将不含<br>, <p> 等,但其他内容部分 (例如用户创建的 WP 编辑器中的标准文本) 仍然具有 WP 的完整功能。

参考文献:

  1. the_content WP filter

  2. Regex “translator”

  3. join PHP function

  4. preg_replace PHP function

次佳解决方案

wpautop()功能为您的内容添加了<p><br> 标签,以保留换行符。如果您想自己添加这些标签,那么您可以将应用此功能的过滤器删除到帖子内容:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

如果您想保留自动 paragaraph 创建 (插入<p> 标签),并删除其他<br> 标签,您可以使用此代码:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

function wpse_wpautop_nobr( $content ) {
    return wpautop( $content, false );
}

add_filter( 'the_content', 'wpse_wpautop_nobr' );
add_filter( 'the_excerpt', 'wpse_wpautop_nobr' );

如果您不确定该代码放在哪里,请参阅 this link

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。