使WordPress的页面和菜单仅对登录用户可见,检查会话变量

时间:2016-05-13 作者:esneyderp

我试图通过另一个平台的API登录wordpress中的用户,所以我要做的是使用ajax函数调用外部API,发送用户凭据(用户名、密码)并获取用户信息:(电子邮件、id、名称…)。

我需要的是登录我的wordpress网站中提到的用户,但不将他们保存(注册)在wordpress数据库中,因此我无法使用任何“用户角色插件”来管理页面/帖子的可见性。

因此,我的目标是:使页面/帖子甚至菜单仅在外部用户登录我的wordpress站点时可见,而不将其保存在数据库中。

我认为可能使用可变会话或我自己的check\\u user\\u login()函数,但我不确定如何实现这一点(我应该在哪里验证某些页面,以将其设置为仅对登录用户可见?),因为即使我有PHP方面的经验,这也是我第一次使用wordpress。

我只是在征求意见,所以正因为如此,我现在不发布任何代码。

再次感谢您的帮助。

1 个回复
最合适的回答,由SO网友:TomC 整理而成

我认为@Milo的评论是正确的。您可能希望使用current\\u user\\u can()等函数。或者,如果这只是为了显示不同的菜单,您可以为远程用户创建自定义菜单,然后在wordpress站点上设置cookie(通过API调用),并在远程验证时向远程用户显示不同的菜单。

add_filter(\'wp_nav_menu_args\', \'wpse_wp_nav_menu_args_filter\');
function wpse_wp_nav_menu_args_filter($args = array()) {
   if ($_COOKIE["remoteuser"] == "loggedin") { // User is remotely authenticated
        // Setup Primary Menu
        if ( $args[\'theme_location\'] == \'primary\' ) {
            $args[\'menu\'] = "remote_user_menu";
        } 
        return $args;           
    }   else {
        return $args;       
            }
}
然后,您可以使用相同的行来确定页面是否应该可见。

相关推荐

PHP警告-在wp-config.php上使用未定义的常量‘force_ssl_login’‘force_ssl_admin’

我有一个困扰多年的PHP警告,我想知道是否有人能解决这个问题。以下两行警告不断记录在my error\\u日志文件中:PHP Warning: Use of undefined constant ‘FORCE_SSL_LOGIN’ - assumed \'‘FORCE_SSL_LOGIN’\' (this will throw an Error in a future version of PHP) in /home/myuser/public_html/wp-config.php on line 92