今回はCakePHPの環境にWordPressを導入する際の設定などついて書いていきたいと思います。こういう実装でサービスをつくる機会は少ないと思いますが、僕らが開発・運用を行なっているWebメディア・KAI-YOU.netではこんな構成でつくられています。
一見面倒に思えますが、サービスに複数人のライターや編集者がいる場合、けっこうメリットがあるのです。
(これは説明する必要がないかもしれないくらい有名ですが)簡単に説明いたしますと、WordPressは非常に優秀なCMSでして、WordPress.comによると、なんと世界の24%のウェブサイトがWordPressで構築されているそうです。
数々のプラグインが用意されていることから、世の中にある大抵のWebサイトはWordPressで作成することができる、と言って良いと思います。簡単なブログから個人のポートフォリオサイト、それにコーポレートサイトまでイケます。
しかしながら、中規模以上のWebサイト、Webサービスをつくる際には、どうしてもWordPressでは受けきれない機能や要望、複雑になりすぎてしまうことも多々あります。
また、アクションフック/フィルターフックを使う癖のあるfunction.php周りの開発に辟易することもあると思います。
そうした際には、CakePHPをはじめとした各種フレームワークを使っての開発するほうが効率が良いですよね。
しかしながら、多くのWebサイトの形式ともいえるBlogのシステムとしてスタンダードになっているWordPress。
Webメディア事業をやっていると、新しいライター/編集者が加入する場合も、WordPressの管理画面なら触ったことがある人も多いです。WordPressの管理画面であれば、独自開発した編集画面の使い方を新しく学んでもらうよりも、ライターの習得コストが少なく、早く編集作業に合流してもらえます。
またWordPressの管理画面に標準で用意されている文章の編集前/編集後の確認ができるリビジョン機能や、画像のアップロード周り、ユーザー周りの権限などは非常に優秀にできていますのでそれを利用したい! という要望に答える為にも記事編集の管理画面としてWordPressを利用し、それ以外の部分をCakePHPで賄うというという方法が考えられます。
前述のWordPressの魅力という部分はまさにKAI-YOU.netで採用した理由です。
という訳で! その為の各種設定などを書いていきたいと思います。
http://cakephp.dev/blog/wp-admin.php (URLは例です) から編集という感じでいきます。
適当にCakePHPのインストール後、/app/webroot/
にWordPressをblogという名称で設置します。
/app/webroot/.htaccess
を編集します。
<IfModule mod_rewrite.c>
RewriteEngine On
# この行の追加 /blog/のみ.htaccessのリライトルールの例外にする
RewriteCond $1 !^/blog/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
上記の設定をして http://cakephp.dev/blog/ にアクセスすると見覚えのあるWordPressのインストール画面が出ますのでそのままインストールします。
<?php
// CakePHPで使用するDBの設定
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'cakephp_db',
'prefix' => '',
'encoding' => 'utf8',
);
// WordPressで使用するDBの設定
public $wordpress = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'wordpress_db',
'prefix' => 'wp_',
'encoding' => 'utf8',
);
ここでのポイントは'prefix' => 'wp_'
という部分でしょうかWordPressでDBを作成した際のprefixを指定することで、
テーブル名がwp_post
だとしてもPostモデルとして指定出来ます。
ここまでやればCakePHPからbakeできます!
という感じですが、ある程度長くなってしまっているのでこの話題は続きます!
次回はModelなどBakeして記事一覧をいい感じに表示させていきます!! あとはまあ、やはりデメリットもあるのでその点についても書いてみたいと思います。
株式会社カイユウでは、エンジニア・デザイナーを募集しております。
WordPressが好きなエンジニア/デザイナーさん、そしてWordPressなんてやってらんねぇよ!ってエンジニア/デザイナーの方!
あなたの力で、メディアやコンテンツの未来を明るくしていきましょう!ღゝ◡╹)ノ