允许访问主页和登录屏幕,但不允许访问其他内容(除非登录)

时间:2017-01-24 作者:qroberts

我创建了一个WordPress网站,并创建了一个“门户”页面,该页面是您访问时显示的主页https://domain.tld. 我有一个插件,它强制所有未登录的用户只能查看此门户页面。如果他们已登录,则可以在整个站点中导航。

在门户页面上,有一个指向主页的链接,其中显示了网站的其余内容/导航菜单。我希望未登录的用户能够单击主页的链接并被要求登录,而不是被迫只能访问门户页面。我可以将门户页面上指向主页的链接更改为指向https://domain.tld/wp-admin 相反,任何已经登录的用户将被带到其管理面板而不是主页。

我能做些什么来纠正这个问题?我正在考虑将WordPress安装移动到https://domain.tld/wp/ 相反,在根目录上有一个静态的非WordPress页面,并在用户点击WordPress时强制用户登录。是否有一种方法可以将登录的用户重定向到/wp-admin/ 单击主页链接是否登录?

1 个回复
SO网友:pants

Option 1 - WP Nav Menus

在门户页面模板中(甚至在页眉模板中),您可以使用wp_nav_menu() 与…结合is_user_logged_in() 打印两个菜单之一。

wp_nav_menu( array(
    \'theme_location\' => is_user_logged_in() ? \'logged-in-menu\' : \'logged-out-menu\'
) );
现在,您需要在Wordpress管理中的“外观”>“菜单”下创建两个菜单。一个菜单是您的常规站点菜单,另一个是您的注销用户专用菜单,其中仅包含登录页面的链接。

您需要更换\'logged-in-menu\'\'logged-out-menu\' 使用slug(例如:\'slug\'), id(例如:18), 或名称(例如:\'Menu Name\') 在您创建的两个菜单中。有关更多信息,请参阅上面链接的文档。

Option 2 - Simple Buttons

在门户页面模板上,可以根据用户是否登录添加两个按钮之一。根据您的喜好更改标记。

if ( is_user_logged_in() ) {
  // user is logged in
  ?>
  <a href="/">Enter Site</a>
  <?php
} else {
  // user is not logged in
  ?>
  <a href="/wp-admin/">Please Log In</a>
  <?php
}

Option 3 - Use a Plugin

现有的插件将根据用户登录、角色等有条件地显示菜单项。据我所知,其中一个插件是WPFront用户角色编辑器。我相信这个插件的免费版本会满足你的需要。

相关推荐

如何筛选/钩入检索密码()以筛选$_POST[‘USER_LOGIN’]?

我正在开发一个网站,其中用户名是一个文件编号,称为CPF(将其视为国家ID),该网站具有以下掩码:000.000.000-00 我将用户名存储为普通数字,但我们所有的表单都必须有上面的掩码,这反过来使其_POST[\'user_login\'] 总是带着破折号和圆点。这是用户登录/用户名的示例:$_POST[\'user_login\'] = \'123.456.789-00\' $actual_username_ondb = \'12345678900\' 这对于登录来说不