如何限制登录用户访问页面?

时间:2018-03-22 作者:Naomi E

客户端站点上的某些页面是机密的,我需要限制登录用户的访问权限。我看过各种各样的会员插件,但它们对于我最基本和最具体的需求来说都是多余的。

我找到了我在函数中测试的这个片段。php

function my_force_login() {
global $post;

if (!is_single()) return;

$ids = array(188); // array of post IDs that force login to read

if (in_array((int)$post->ID, $ids) && !is_user_logged_in()) {
auth_redirect();
}
} 
当我测试这段代码时,它限制了一篇特定的博客文章,这正是我想要的。(这里的关键是,如果用户单击指向受限页面的链接但未登录,则会将其重定向到登录页面,但在完成登录后,应将其重定向回原来的页面)

现在,我需要修改该代码,以便它可以执行以下操作:

限制具有特定父级的所有页面。

这可能吗?如何修改代码以实现此结果?

谢谢

1 个回复
SO网友:Sam Schneider

这个怎么样?

function my_force_login() {
  global $post;

  if (!is_single()) return;

  $restricted_parent_id = 1 // Whatever id you are targeting.

  if ($post->post_parent == $restricted_parent_id && !is_user_logged_in()) {
    auth_redirect();
  }
}
有关的详细信息post_parent 和其他条件标记:https://codex.wordpress.org/Conditional_Tags

结束

相关推荐

自定义插件提供:wp-admin/admin-ajax.php 400(错误请求)

我在调试我正在编写的插件时遇到问题。我想在用户更改select输入的选项时执行Ajax请求。事情是,它昨天完全按照预期工作,然后当我今天测试网站时(从昨天起,没有进行任何代码更改),我得到一个:领域com/wp-admin/admin-ajax。php 400(错误请求)我的Chrome控制台中的消息。如果我在Internet Explorer/FireFox中尝试,它不会在控制台中给出错误,但Ajax请求仍然不起作用。我正在创建的插件是一个DigitalOcean droplet,它是使用WordPre