【问题标题】:Integrating yii into Wordpress将 yii 集成到 Wordpress 中
【发布时间】:2013-04-28 12:57:16
【问题描述】:

我有一个使用 gii 创建的 yii CRUD,我想将它集成到 WP 管理员部分。

我看过一些关于将 Wordpress 集成到 yii 的控制器/路由器中的教程,但是由于我的应用程序非常小,而且我的 WP 已经在工作,所以我想做相反的事情。所以基本上我想做的就是将 WP 身份验证集成到 yii 的模块中。

有没有关于如何做到这一点的教程?什么是最干净和最简单的方法?

【问题讨论】:

  • 我用 yii 搜索了 wordpress 身份验证,但只找到了另一种方法(即在 yii 中集成 wordpress)
  • 尝试 WP 堆栈交换。在那里你可能会得到更好的答案。
  • 谢谢,我会试试的

标签: wordpress authentication yii


【解决方案1】:

您可以使用 WPUser 之类的东西扩展 CWebUser,唯一需要的函数是 getIsGuest 和 getName 或类似的东西。

因此,您基本上可以像使用普通 CWebUser 一样构建所有身份验证,但对 wp_-functions 做一些令人费解的事情以使一切正常。

基本上这些功能; http://codex.wordpress.org/Function_Reference/wp_get_current_user http://codex.wordpress.org/Class_Reference/WP_User

使用 WP_User 您可以模拟 yii 用户和 RBAC 等,查看 IWebUser 以了解您的用户类需要工作:http://www.yiiframework.com/doc/api/1.1/IWebUser

要在 wordpress 中包含 yii,您唯一需要做的就是制作一个模板并将 /yii-app/index.php 包含在内容中,一切都会正常运行。

这有点短,因为我很着急。如果您需要更多帮助,我可以在明天左右返回我为这样的项目编写的代码。

【讨论】:

  • 谢谢,这是有用的信息。我会尽量按照你告诉我的来解决。
  • @Alexander,如果你能记录你所做的事情,可能会对 Yii 社区有用。维基文章会很棒:-)
【解决方案2】:

这是一个简单的类,它将 WordPress 的 API 包装到 Yii 的基于角色的身份验证管理器中 - 在您的控制器中,您将指定要检查的“角色”(也称为 WordPress 功能)。

<?php public function accessRules()
{
    return array(
        array('allow',
            'actions'=>array('index','view'),
            'roles'=>array('publish_posts') 
            //WordPress capability check. 
            //  See @link http://codex.wordpress.org/Roles_and_Capabilities
        ),
 }
 ?>

这是你的新 User 类,需要添加到 Yii 配置文件中 components => user => class= 'wpUser' 部分。这将替换 Yii 的默认 CWebUser(未在配置数组中指定 - 默认加载)。另外-您需要从数组中删除“allowAutoLogin”=> true。

<?php
class wpUser extends CApplicationComponent implements IWebUser, IApplicationComponent {
        public function init ()
        {
            parent::init();
        }
        function checkAccess ($operation, $params = array()) {
            return current_user_can($operation);
        }
        function getId() {
            return get_current_user_id();
        }
        function getIsGuest () {
            $is_user_logged_in = is_user_logged_in();
            return ! $is_user_logged_in;
        }
        function getName () {
            $name = wp_get_current_user()->user_login;
            return $name;
        }
        public function loginRequired()
        {
            wp_login_form(array('redirect' => Yii::app()->getRequest()->getUrl()));
        }
    }
?>

Published on Yii's Wiki

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多