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

时间:2013-04-05 05:31:24

标签: php wordpress codeigniter wordpress-plugin

我想要完成的背景...目前我已经在Codeigniter上创建了一个迷你CMS来编辑Web应用程序的一些数据库内容。现在它没有密码保护,因为它仍在开发中。我想将它集成到我的WordPress安装中,这样我的客户就不必登录CMS WordPress。

我到目前为止的地方是:

  1. 我创建了一个自定义WP admin_menu(通过add_menu_page
  2. 我的CMS在管理员菜单标签的iframe中可见/正常工作。
  3. 如果用户通过身份验证为WordPress管理员,我现在需要做的是只允许访问这些CMS页面。

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

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

    提前谢谢!

    更新:由于尚未在答案中回答,我需要知道如何在WordPress系统之外执行WordPress功能。

2 个答案:

答案 0 :(得分:3)

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

根据该codex页面,这应该可以根据角色测试管理员,尽管我无法确认这个抱歉。我在过去肯定使用过这种方法来验证用户是否具有给定的功能。

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

编辑:要使用WP凭据对来自不同站点的用户进行身份验证,this answer over on Wordpress.stackexchange描述了如何使用WP的内置XMLRPC服务。答案是在从servlet进行身份验证的上下文中编写的,但是WP XMLRPC服务的执行可以在例如客户端的JavaScript中实现(而不是在站点的两个单独的后端之间),因此在您的方案中可能更有用。 / p>

答案包括一个预先编写的插件,用于处理来自WP服务器上远程客户端的特定身份验证请求...但请注意下面有关使用令牌而不是通过线路传递信息的问题的评论(研究“nonce”,如果您还不熟悉这些...... WP可以为您创建这些。)

答案 1 :(得分:1)

我已经想到了这一点。代码如下:

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