問題描述
如何從頁面中刪除評論部分,而不是從帖子頁面刪除?
最佳解決方案
如果要在帖子上顯示評論和評論表單,而不是在頁面上,您需要根據顯示項目的類型 (帖子或頁面) 將模板文件中的邏輯分為 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。