如何在WordPress Loop中隱藏受密碼保護的帖子


WordPress允許您創建受密碼保護的帖子。 最近,我們的一位讀者詢問是否可以從該網站隱藏受密碼保護的帖子。 默認情況下,WordPress隱藏密碼保護帖子的內容,但仍顯示帶有“ Protected”前綴的帖子標題。 在本文中,我們將向您展示如何從WordPress循環中隱藏受密碼保護的帖子。

為什麼要在WordPress中隱藏受密碼保護的帖子?

默認情況下,WordPress顯示帶有標題和“保護”前綴的受密碼保護的帖子。 用戶將需要輸入密碼才能查看帖子的內容。

受密碼保護的帖子顯示在首頁和小部件中

該帖子標題可在主頁,存檔,最近發布的窗口小部件等上看到。如果您希望將某些內容完全保密,那麼這是不理想的。

沒有密碼的用戶不僅可以看到帖子的標題,還可以嘗試輸入密碼。 眾所周知,密碼可能會被破解。

話雖如此,讓我們看一下如何在WordPress循環中隱藏受密碼保護的帖子,以便其他用戶看不到它們。

在WordPress中隱藏受密碼保護的帖子

只需將此代碼添加到主題的functions.php文件或特定於站點的插件中即可。

function wpb_password_post_filter( $where="" ) {
    if (!is_single() && !is_admin()) {
        $where .= " AND post_password = ''";
    }
    return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );

此代碼僅使用修改發送到WordPress的查詢 posts_where 過濾。 它要求WordPress提取所有沒有密碼的帖子。

訪問您的網站,您將看到受密碼保護的帖子不再顯示在主頁,存檔或諸如最新帖子之類的小部件中。

在WordPress中隱藏受保護的帖子之前和之後

您仍然可以通過直接訪問帖子本身的URL來訪問該帖子。

上面的示例對所有用戶隱藏受密碼保護的帖子。 如果您運行了一個多作者WordPress網站並希望受保護的帖子可供具有編輯私人帖子功能的用戶查看,該怎麼辦?

只需使用另一個條件標籤修改以上代碼,如下所示:

function wpb_password_post_filter( $where="" ) {
   if (!is_single() && !current_user_can('edit_private_posts') && !is_admin()) {
        $where .= " AND post_password = ''";
    }
    return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );

在此示例中,我們檢查用戶是否無法編輯受密碼保護的帖子,然後僅顯示沒有密碼的帖子。 這樣做,所有具有管理員和編輯者角色的用戶都將在站點的前端看到受密碼保護的帖子。

我們希望本文能幫助您從站點上的WordPress循環中隱藏受密碼保護的帖子。 您可能還想看一下我們的教程,以了解如何在WordPress中更改私人和受保護帖子前綴。

如果您喜歡這篇文章,請訂閱我們的YouTube頻道WordPress視頻教程。 您也可以在找到我們 推特 和Google+。