問題描述

如何從頁面中刪除評論部分,而不是從帖子頁面刪除?

最佳解決方案

如果要在帖子上顯示評論和評論表單,而不是在頁面上,您需要根據顯示專案的型別 (帖子或頁面) 將模板檔案中的邏輯分為 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。