Upload
kazuhiro-hara
View
7.561
Download
3
Embed Size (px)
DESCRIPTION
Method of using CakePHP in plug-in of WordPress.WordPressのプラグイン内でCakePHPを使う方法
Citation preview
WordPressとCakePHP連携より複雑なことが出来る管理画面をつくろう
第5回CakePHP勉強会@TOKYO
株式会社エフエックスビイ代表取締役CVO 原 一浩
twitter tag : #phpstudy #cakephpstudy #cakephp
twitter id : @kara_d tag : #cakephpstudy
➡原 一浩‣株式会社エフエックスビイ代表取締役CVO- www.fxb.jp
‣ DesignWedge編集長
twitter id : @kara_d tag : #cakephpstudy
➡普段の仕事‣ RIA- Flash/Flex/AIR- AJAX- Silverlight- および、これら技術を使用したサイトのサーバーサイド開発•メインはCakePHP+MySQL•最近はScalaという言語のliftというフレームワークに興味津々
‣ CMS- MovableType、WordPress、Typo3
MEDIA
CMS RIA
twitter id : @kara_d tag : #cakephpstudy
➡普段の仕事その2‣自作クローラーを使ったデザインリサーチに基づく、デザインコンサルティング- Vaqumという開発コードネーム。CakePHPベース
twitter id : @kara_d tag : #cakephpstudy
➡今回のお話‣WordPressとCakePHPを連携させると、より複雑なCMSをすっきりと、素早く作ることができるよというお話
‣必要知識- PHPの簡単な知識- WordPressの管理画面のカスタマイズ基礎知識- WordPressのプラグイン作成の知識ちょっとだけ- CakePHPのある程度の知識- データベースに関する知識ほんの少し
twitter id : @kara_d tag : #cakephpstudy
➡WordPressって?‣WordPress(ワードプレス)はデータベースにMySQLを利用し、PHPで書かれたオープンソースのブログソフトウェアである。b2/cafelogというソフトウェアの後継として開発された。GNU General Public License(GPL)の下で配布されている。- Wikipediaより引用
twitter id : @kara_d tag : #cakephpstudy
➡CakePHPをプラグインから使う‣組み込みの流れ- CakePHP側にプライベートメソッドを記述- WordPress側にCakePHPブリッジクラス作成- CakePHPアクセス用ファイルを作成- CakePHPを組み込みたいWordPressのプラグインを用意- WordPress上で確認
WordPressプラグイン
ブリッジ用クラス
アクセス用ファイル
CakePHP
twitter id : @kara_d tag : #cakephpstudy
➡今回つくるもの‣ ToDoアプリからToDoを一つ抜き出し、WordPressの管理画面に表示させてみる
‣ Todoというモデルと、Userというモデルがある
twitter id : @kara_d tag : #cakephpstudy
➡ToDoトップページ‣ 1.3で作った即席ToDoアプリ(Bakeするだけの簡単なお仕事。作業時間5分)
twitter id : @kara_d tag : #cakephpstudy
➡ToDo個別ページ
twitter id : @kara_d tag : #cakephpstudy
➡ToDoユーザーページ
twitter id : @kara_d tag : #cakephpstudy
➡CakePHP側にプライベートメソッドを記述‣ todo_controller.phpに追記
function _getToDo($id = 0) { $result = $this->Todo->findById($id); return $result;}
twitter id : @kara_d tag : #cakephpstudy
➡WordPress内にCakePHPブリッジクラス作成class WPCakePHP { var $controller; function _getToDo($id = 0) { require_once ($_SERVER['DOCUMENT_ROOT'] . '/altodo/webroot/cakephp.php'); App::import('Controller', 'Todos'); $this->controller = new TodosController(); $this->controller->constructClasses(); $result = $this->controller->_getTodo($id); return $result; }}
twitter id : @kara_d tag : #cakephpstudy
➡CakePHPアクセス用ファイルを作成‣ CakePHPのapp内webrootにあるindex.phpをコピーし、cakephp.phpと複製- 下記の2行をコメントアウト
- この方法はUsing CakePHP in external PHP Systemsにて学習
✴ http://debuggable.com/posts/using-cakephp-in-external-php-systems-cmss-weblogs-etc:480f4dd5-ed94-4186-acda-4443cbdd56cb
//$Dispatcher = new Dispatcher();//$Dispatcher->dispatch();
twitter id : @kara_d tag : #cakephpstudy
➡CakePHPを組み込みたいWordpressのプラグインを用意
function _getToDo($id = 0) { require_once (ABSPATH . '/wp-content/plugins/wp-cakephp/wp-cakephp.php'); $cakeObj = new WPCakePHP(); $result = $cakeObj->_getToDo($id); return $result;}
twitter id : @kara_d tag : #cakephpstudy
➡HTMLの出力$todo_arr = _getToDo(56);$todo = <<< EOF <h3>ID</h3> <p>{$todo_arr["Todo"]["id"]}</p> <h3>ToDo名</h3> <p>{$todo_arr["Todo"]["title"]}</p> <h3>ステータス</h3> <p>{$todo_arr["Todo"]["check"]}</p> <h3>ユーザー</h3> <p>{$todo_arr["User"]["username"]}</p> <h3>作成日</h3> <p>{$todo_arr["Todo"]["created"]}</p>EOF;
twitter id : @kara_d tag : #cakephpstudy
➡Wordpress上で確認
‣エラー的な何かがでた。。
twitter id : @kara_d tag : #cakephpstudy
➡CakePHP本体の修正‣ stripslashes_deepという同名の関数がWordpressとCakePHP両方で定義されているのが原因
‣ if(!function_exists('stripslashes_deep')){ ... }で囲ってあげる
‣暫定処置ですので注意。
twitter id : @kara_d tag : #cakephpstudy
➡もう一度Wordpress上で確認
‣また同様のエラー的ななにかが‣ _ _関数が2重定義されているので同じように直す
‣他言語対応している人は注意‣この問題をどちらのシステムにも手を付けずに直す、いい方法あったら共有させてください。
twitter id : @kara_d tag : #cakephpstudy
➡Wordpress上で確認‣無事表示できました。パチパチ。‣データの保存や検索、バリデーションなどCakePHPのコントローラで自由に出来ます
twitter id : @kara_d tag : #cakephpstudy
➡使いどころ‣入力画面で、CakePHP側を検索して入力補完‣ CakePHP側のビューを表示‣WordPressの入力時にCakePHP側にも情報を反映
‣WordPressをCakePHPのadmin画面として使う- ユーザー認証、CMS機能、デザイン、UI機能つきと考えると実はコストパフォーマンス高い
‣など、応用次第ではかなりのことが出来るはず
twitter id : @kara_d tag : #cakephpstudy
➡NoseRubのご紹介‣ CakePHPベースのTwitterクローン‣頑張って日本語化しました‣情報は http://fxb.jp/ にて公開予定
twitter id : @kara_d tag : #cakephpstudy
➡ありがとうございました‣ご質問などありましたら是非!!
‣ twitter : @kara_d‣mail : [email protected]