禁止WordPress自動(dòng)在shortcode內(nèi)添加br或p標(biāo)簽的辦法

2013-01-22 10:00:03來源:我愛水煮魚作者:

我們?cè)谑褂?nbsp;WordPress Shortcode API 開發(fā)插件的時(shí)候,有個(gè)比較麻煩的問題,就是 WordPress 會(huì)自動(dòng)在 shortcode 內(nèi)添加 br 或者 p 標(biāo)簽,這樣可能會(huì)打亂你的原先預(yù)想的 HTML 結(jié)構(gòu)和布局。

我們?cè)谑褂?WordPress Shortcode API 開發(fā)插件的時(shí)候,有個(gè)比較麻煩的問題,就是 WordPress 會(huì)自動(dòng)在 shortcode 內(nèi)添加 br 或者 p 標(biāo)簽,這樣可能會(huì)打亂你的原先預(yù)想的 HTML 結(jié)構(gòu)和布局。

造成這個(gè)問題的原因是 WordPress 默認(rèn)的日志內(nèi)容處理流程中,wpautop(將回車轉(zhuǎn)換成 p 或者 br 標(biāo)簽的函數(shù))是在 Shortcode 前面運(yùn)行的。所以我們的解決方案也是非常簡(jiǎn)單,改變它們執(zhí)行的順序,在當(dāng)前主題的 functions.php 文件中添加:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);

這樣調(diào)整順序之后,你的 shortcode 里面的內(nèi)容,就不會(huì)有自動(dòng)添加的 p 或者 br 標(biāo)簽,但是如果 shortcode 中部分的內(nèi)容你又需要一些 p 或者 br 標(biāo)簽用來換行的話,你需要自己手動(dòng)在自己 shortcode 處理程序中添加 wpautop 來處理了。

function bio_shortcode($atts, $content = null) {
   $content = wpautop(trim($content));
   return '<div class="bio">' . $content . '</div>';
}
add_shortcode('bio', 'bio_shortcode');

關(guān)鍵詞:WordPressshortcode

贊助商鏈接: