跳到主要内容

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

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

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

该帖子标题可在主页,存档,最近发布的窗口小部件等上看到。如果您希望将某些内容完全保密,那么这是不理想的。

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

话虽如此,让我们看一下如何在WordPress循环中隐藏受密码保护的帖子,以便其他用户看不到它们。

如何从wordpress Loop中隐藏受密码保护的帖子
如何从wordpress Loop中隐藏受密码保护的帖子

在WordPress中隐藏受密码保护的帖子

只需将此代码添加到主题的functions.php文件或特定于站点的插件中即可。

functionwpb_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提取所有没有密码的帖子。

访问您的网站,您将看到受密码保护的帖子不再显示在主页,存档或诸如最新帖子之类的小部件中。

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

上面的示例对所有用户隐藏受密码保护的帖子。如果您运行了一个多作者 WordPress网站并希望受保护的帖子可供具有编辑私人帖子功能的用户查看,该怎么办?

只需使用另一个条件标签修改以上代码,如下所示:

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

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

回到顶部