問題描述
如何從頁面中刪除評論部分,而不是從帖子頁面刪除?
最佳解決方案
如果要在帖子上顯示評論和評論表單,而不是在頁面上,您需要根據顯示專案的型別 (帖子或頁面) 將模板檔案中的邏輯分為 comments_template()
。有兩種方法可以這樣做:您可以為兩個專案保留一個模板檔案,並使用 conditional tags:
if (!is_page()) {
comments_template();
}
另一個選項是為您的帖子使用 single.php
模板檔案,併為您的頁面使用 page.php
(有關詳細資訊,請參閱 the Template Hierarchy) 。只需在頁面模板中不要再呼叫 comments_template()
。如果帖子和頁面佈局之間沒有其他差異,則具有條件標籤的一個組合模板檔案可能更好的可維護性。
如果要遠距離執行此操作,那麼模板檔案已經包含對 comments_template()
的呼叫,您可以建立一個掛接到 comments_template
過濾器的外掛,並將其重定向到目錄中的空檔案 (也可以甚至是外掛檔案本身 – 由於它只包含 PHP 程式碼,它不會顯示任何東西 – 但這將是混淆他人) 。
add_filter('comments_template', 'no_comments_on_page');
function no_comments_on_page( $file )
{
if ( is_page() ) {
$file = dirname( __FILE__ ) . '/empty-file.php';
}
return $file;
}
次佳解決方案
在 comments.php
模板開始時,我非常喜歡 Hybrid 主題的這個片段,如果在 per-post /per-page 上不支援或停用註釋,它將靈活地停用註釋:
if ( !post_type_supports( get_post_type(), 'comments' ) || ( !have_comments() && !comments_open() && !pings_open() ) )
return;
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。