##何が出来るか
- 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>';