cakephpでwordpressを使う

cakephpwordpressを使う為の方法のメモ
モデルのファイル名などは適当に。
詳細はwordpress のDBを参照。

1.database.phpwordpressの設定をする


var $wordpress = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => '#####',
'password' => '#####',
'database' => '#####',
'prefix' => '',
'encoding'=>'utf8'
);


2.wordpress用のモデルを5つ用意する

1つ目(投稿用) wp_post.php

class WpPost extends AppModel {

var $name = "WpPost";
var $useDbConfig = "wordpress";
var $useTable = "wp_posts";

var $hasMany= array(
'WpPostMeta' => array(
'clessName' =>'WpPostMeta',
'foreignKey' => 'post_id',
)
);

//HABTMの関連づけ
var $hasAndBelongsToMany = array(
'WpCategoryDetail' =>
array(
'className' => 'WpCategoryDetail',
'joinTable' => 'wp_term_relationships',
'with' =>'WpRelation',
'foreignKey' => 'object_id',
'associationForeignKey' => 'term_taxonomy_id',
'unique' => false,
'conditions' => array('not'=>array(
'WpCategoryDetail.taxonomy'=>'link_category')),
),
);



function findWP(){
$conditions = array('post_type'=>'post');
return $this->findAll($conditions,null,'post_date DESC',2,null,5);
}

}
?>


2つめ(カスタムフィールド)wp_post_meta.php

class WpPostMeta extends AppModel {

var $name = "WpPostMeta";
var $useDbConfig = "wordpress";
var $useTable = "wp_postmeta";

}
?>

3つめ(カテゴリー)wp_category.php

class WpCategory extends AppModel {

var $name = "WpCategory";
var $useDbConfig = "wordpress";
var $useTable = "wp_terms";
var $primaryKey = 'term_id';


}
?>

4つ目(カテゴリー)wp_category_detail.php

class WpCategoryDetail extends AppModel {

var $name = "WpCategoryDetail";
var $useDbConfig = "wordpress";
var $useTable = "wp_term_taxonomy";
var $primaryKey = 'term_taxonomy_id';

var $hasOne = array(
'WpCategory' => array(
'clessName' =>'WpCategory',
'foreignKey' => 'term_id',
)
);

}
?>


5つ目(記事とカテゴリーの関連)wp_relation.php

class WpRelation extends AppModel {

var $name = "WpRelation";
var $useDbConfig = "wordpress";
var $useTable = "wp_term_relationships";


}
?>


コントローラーで取得する
(最新の記事5件を取得するようにモデルに定義して、コントローラに取得したいカスタムフィールドを定義してます)

$this->WpPost->hasMany['WpPostMeta']['conditions'] = array('or'=>array(
array('WpPostMeta.meta_key' => 'カスタムフィールド1'),
array('WpPostMeta.meta_key' =>'カスタムフィールド2')));
$this->set('posts',$this->WpPost->findWP());

とりあえずコレで取得→表示はできました。