当您的WordPress主题处理导航菜单的外观时,您可以轻松…
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'
);
此代码仅使用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'
);
在此示例中,我们检查用户是否无法编辑受密码保护的帖子,然后仅显示没有密码的帖子。这样做,所有具有管理员和编辑者角色的用户都将在网站的前端看到受密码保护的帖子。