問題描述
嘿,我只是想防止在我的 wordpress 帖子中創建空的段落。當嘗試手動空間內容時,會發生這種情況。
我不知道為什麼這不會生效?
/*Remove empty paragraph tags from the_content*/
function removeEmptyParagraphs($content) {
/*$pattern = "/<p[^>]*></p[^>]*>/";
$content = preg_replace($pattern, '', $content);*/
$content = str_replace("<p></p>","",$content);
return $content;
}
add_filter('the_content', 'removeEmptyParagraphs');
編輯/更新:
好像是這樣的問題:
function qanda($content) {
// filters for [q=some question] and [a=some answer]
// wraps it inside of <div class="qanda"><div class="question"> </div><div class="answer"> </div></div>
$content = preg_replace('/[q=(.+?)].+?[a=(.+?)]/is', '<div class="qanda"><div class="question">$1</div><div class="answer">$2</div></div>', $content);
return $content;
}
add_filter('the_content', 'qanda');
我自己做了這個功能來過濾我的帖子和頁面中的一種短碼模式。即使在後台,這個職位完全沒有段落和不必要的間隔,結果如下所示:
<div class="entry">
<p></p>
<div class="qanda">...</div>
<p></p>
<p></p>
<div class="qanda">...</div>
<p></p>
<p></p>
<div class="qanda">...</div>
</div>
任何想法,這個空 p 來自哪裏?
最佳解決方案
WordPress 將自動插入<p> 和</p> 標籤,該標籤在帖子或頁面中分隔內容中斷。如果由於某種原因想要或需要刪除這些,可以使用以下任一代碼段。
要完全禁用 wpautop 過濾器,可以使用:
remove_filter('the_content', 'wpautop');
如果您仍然希望此功能可以嘗試在過濾器中添加以下優先級值:
add_filter('the_content', 'removeEmptyParagraphs',99999);
次佳解決方案
我有同樣的問題。我只是做了一個… 讓我們説… 不是很美麗的解決方案,但它的工作,迄今為止,這是我唯一的解決方案。我添加了一點 JavaScript 行。它需要 jQuery,但我相信你可以找出沒有。
這是我的小 JS:
$('p:empty').remove();
這對我有用
第三種解決方案
我知道這已經標記為’solved’,但僅供參考,這裏有一個功能,無需添加任何標記,就可以完成所需的功能。只要把它放在你的主題的 functions.php 中:
add_filter('the_content', 'remove_empty_p', 20, 1);
function remove_empty_p($content){
$content = force_balance_tags($content);
return preg_replace('#<p>s*+(<brs*/*>)?s*</p>#i', '', $content);
}
這是從這個要點:https://gist.github.com/1668216
第四種方案
您可以運行您的過濾器之前那個討厭的 wpautop 掛鈎和混淆的標記。
add_filter('the_content', 'qanda', 7 );
這樣一來,你已經把它所需要的東西轉換成了它,這在某些情況下有幫助。
第五種方案
只需使用 CSS
p:empty {
display: none;
}
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。