1

gii を使用して作成された yii CRUD があり、それを WP 管理者のセクションに統合したいと考えています。

Wordpress を yii のコントローラー/ルーターに統合することを中心に展開するチュートリアルをいくつか見てきましたが、私のアプリは非常に小さく、WP は既に機能しているので、逆のことをしたいと思います。基本的に私がやりたいことは、WP 認証を yii のモジュールに統合することです。

これを行う方法に関するチュートリアルはありますか? 最もクリーンでシンプルな方法は何でしょうか?

4

2 に答える 2

0

これは、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 (config 配列で指定されていない - デフォルトでロードされる) を置き換えます。また、配列から "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()));
        }
    }
?>

Yiiのウィキで公開

于 2013-11-26T01:58:15.743 に答える