問題描述

在 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。