LoginSignup
21
20

More than 5 years have passed since last update.

WordPressとCakePHPを連携させる

Last updated at Posted at 2016-11-19

何が出来るか

  • CakePHPで書いた処理をWordPress側で呼び出すことが出来る
  • WordPressの機能・Pluginでは取得できないデータを取得することが出来る
  • 自分好みに取得したいデータをCakePHPで記述できる

開発環境

  • WordPress 4.5.3
  • CakePHP 2.8.4

ディレクトリ構成

root/
 ├ wordpress/ //WordPressのインストール先
 ├ cakephp/
 │ └ app/
 │   └ webroot/
 │          └ index.php
 │          └ test.php //新たに作成するファイル

CakePHPの設定

/cakephp/app/webroot/index.phpの下記の記述を削除したtest.phpを作成する

/cakephp/app/webroot/test.php

//この記述を削除した、新たなファイルを作成

App::uses('Dispatcher', 'Routing');

$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(
    new CakeRequest(),
    new CakeResponse()
);

WordPressで呼び出す処理を記述する

UsersController.php

function getUsers(){

    //Modelでユーザー情報を取得する処理を記述
    $users = $this->Tests->getUsers();

    return  $users;
}

WordPressの設定

プラグインに呼び出すコントローラーの処理を記述する

プラグインの入れ方は公式Wikiにて
プラグインの入れ方

先程記述を変えた、test.phpを読み込む

testcake.php

class WPCakePHP{
    var $controller;

    function getUsers()
      {
        require_once ($_SERVER["DOCUMENT_ROOT"].'/cakephp/app/webroot/test.php');
        /*こちらの記述でも可能
            require(ABSPATH.'../cakephp/app/webroot/test.php');
        */
        App::import('Controller', 'Users');
        $this->controller = new UsersController();
        $users = $this->controller->getUsers();
        return $users;
      }

これをプラグインに入れて有効化する。

WordPressでの呼び出し方

好きなテンプレート内で先のプラグインの処理を呼び出す

(呼び出したいテンプレート)page.php

function getUsers()
{
    require_once ($_SERVER["DOCUMENT_ROOT"].'/wordpress/wp-content/plugins/testcake/testcake.php');
    /*こちらの記述でも可能
        require_once(ABSPATH.'/wp-content/plugins/testcake/testcake.php');
    */
    $cakeObj = new WPCakePHP();
    $users = $cakeObj->getUsers();
    return $users;
}

    $users = getUsers();

    echo '<ol>';
    foreach($users as $user){
        echo '<li>'.$user['Users']['name'].'</li>';
    }
    echo '<ol>';

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20