エンジニアリング

CakePHPとWordPressを連携するメリットとその方法 Vol.1

Posted on by キャベツこうべ

CakePHPとWordPressを連携するメリットとその方法 Vol.1先日誕生日を迎え、会社の人に「うさぎ」というめちゃうま汁無し担々麺屋さんのTシャツをプレゼントされてウキウキ!カイユウ開発部でエンジニアをしておりますキャベツこうべです。

今回はCakePHPの環境にWordPressを導入する際の設定などついて書いていきたいと思います。こういう実装でサービスをつくる機会は少ないと思いますが、僕らが開発・運用を行なっているWebメディア・KAI-YOU.netではこんな構成でつくられています。

一見面倒に思えますが、サービスに複数人のライターや編集者がいる場合、けっこうメリットがあるのです。

WordPressについて、おさらい

(これは説明する必要がないかもしれないくらい有名ですが)簡単に説明いたしますと、WordPressは非常に優秀なCMSでして、WordPress.comによると、なんと世界の24%のウェブサイトがWordPressで構築されているそうです。

数々のプラグインが用意されていることから、世の中にある大抵のWebサイトはWordPressで作成することができる、と言って良いと思います。簡単なブログから個人のポートフォリオサイト、それにコーポレートサイトまでイケます。

WordPressにも困ることや難しいことはあります

しかしながら、中規模以上のWebサイト、Webサービスをつくる際には、どうしてもWordPressでは受けきれない機能や要望、複雑になりすぎてしまうことも多々あります。

また、アクションフック/フィルターフックを使う癖のあるfunction.php周りの開発に辟易することもあると思います。

そうした際には、CakePHPをはじめとした各種フレームワークを使っての開発するほうが効率が良いですよね。

WordPressの良さを活かしつつ、cakePHPを使う!

しかしながら、多くのWebサイトの形式ともいえるBlogのシステムとしてスタンダードになっているWordPress。

Webメディア事業をやっていると、新しいライター/編集者が加入する場合も、WordPressの管理画面なら触ったことがある人も多いです。WordPressの管理画面であれば、独自開発した編集画面の使い方を新しく学んでもらうよりも、ライターの習得コストが少なく、早く編集作業に合流してもらえます。

またWordPressの管理画面に標準で用意されている文章の編集前/編集後の確認ができるリビジョン機能や、画像のアップロード周り、ユーザー周りの権限などは非常に優秀にできていますのでそれを利用したい! という要望に答える為にも記事編集の管理画面としてWordPressを利用し、それ以外の部分をCakePHPで賄うというという方法が考えられます。

KAI-YOU.netでも、ライターや編集者が触る部分には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のインストール画面が出ますのでそのままインストールします。

CakePHPのデータベースの設定

<?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なんてやってらんねぇよ!ってエンジニア/デザイナーの方!

あなたの力で、メディアやコンテンツの未来を明るくしていきましょう!ღゝ◡╹)ノ

キャベツこうべ
キャベツこうべ

エンジニアをしております。神戸です。
インターネット上ではキャベツこうべという名前を名乗っていたりします。
KAI-YOUのエンジニアとして皆様によりポップなコンテンツを、良質な体験とともにお届けできるように日々改善+新規開発をしております。

カテゴリ一覧
月別アーカイブ