You are here:  Home » PHP » 如何从WordPress循环隐藏受密码保护的帖子

WordPress允许您创建受密码保护帖子。最近我们的一位读者询问是否可以隐藏网站上受密码保护的帖子。默认情况下,WordPress会隐藏受密码保护的帖子的内容,但它仍会显示带有“受保护”前缀的帖子标题。在本文中,我们将向您展示如何从WordPress循环中隐藏受密码保护的帖子。

为什么在WordPress中隐藏受密码保护的帖子?

默认情况下,WordPress显示受密码保护的帖子及其标题和“受保护”前缀。用户需要输入密码才能查看帖子的内容。

Password protected posts displayed on homepage and in widgets

此帖子标题在主页,档案,最近的帖子小部件等上可见。如果您想将某些内容完全保密,那么这不是理想的。

不仅没有密码的用户可以看到帖子标题,他们也可以尝试输入密码。众所周知,密码可以破解。

话虽如此,让我们来看看如何从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" );

此代码仅使用 posts_where 过滤器修改发送到WordPress的查询。它要求WordPress获取所有没有密码帖子

访问您的网站,您会看到主页,档案或最近帖子等小部件中不再显示受密码保护的帖子。

Before and after hiding protected posts in WordPress

您仍然可以通过直接访问帖子本身访问该帖子。

上面的示例隐藏了所有用户的密码保护帖子。如果您运行多作者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视频教程。您也可以在Twitter和Google +上找到我们。

评论被关闭。