只允许登录的WordPress管理员访问页面(WordPress核心之外)


Only allow logged in WordPress Admin to access page (outside of WordPress core)

我正在努力完成的背景…目前,我在Codeigniter上创建了一个迷你CMS,用于编辑web应用程序的一些数据库内容。现在它没有密码保护,因为它仍在开发中。我想将此集成到我的WordPress安装中,以便我的客户端不必登录CMS WordPress。

我到目前为止的位置是:

    我已经创建了一个自定义WP admin_menu(通过add_menu_page)
  1. 我有CMS可见/在管理菜单选项卡的iframe工作。

我现在需要做的是,如果用户被认证为WordPress管理员,只允许访问这些CMS页面。

如果你想知道我的目录结构:

/ (Codeigniter installed on root)
/blog/ (WordPress Install)
/blog/cms/ (CMS that is talking to Codeigniter)

提前感谢!

更新:因为它还没有在答案中回答,我需要知道如何在WordPress系统之外执行WordPress功能。

您可能希望使用WordPress的current_user_can()函数来确认用户至少具有一个通常与Admin用户相关联的功能,或者是Administrator角色的成员。

根据该法典页,这应该可以根据角色测试管理员,尽管我无法确认这一点,对不起。我过去当然使用过这种方法来验证用户是否具有给定的能力。

<?php current_user_can( 'Administrator' ); ?>

编辑:验证用户从不同的站点到WP,使用WP凭证,这个答案在Wordpress上。stackexchange描述了如何使用WP内置的XMLRPC服务。答案是在servlet的身份验证上下文中编写的,但是使用WP XMLRPC服务可以在客户端(而不是在站点的两个独立后端之间)用JavaScript实现,因此在您的场景中可能更有用。

答案包括一个预先编写的插件来处理来自您的远程客户端在WP服务器上的特定认证请求…但请注意下面关于使用代币而不是通过网络传递信用的问题的评论(如果你还不熟悉这些,可以研究"nonce"……

我明白了。下列代码:

define('WP_USE_THEMES', false);
require('../wp-blog-header.php');
if(!is_user_logged_in())
{
    exit('You do not have access');
}