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' );

在本例中,我们检查用户是否无法编辑受密码保护的帖子,然后只显示没有密码的帖子。这样做,所有具有管理员和编辑用户角色的用户都将在您网站的前端看到受密码保护的帖子

评论被关闭。