如何从 WordPress 循环中隐藏受密码保护的帖子

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

posts_where此代码使用过滤器简单地修改发送到 WordPress 的查询。它要求 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中更改私人和受保护的帖子前缀。