イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです。ITトレンド・List Finderの開発をベースに、業務外での技術研究などもブログとして発信していってます!


このエントリーをはてなブックマークに追加

WordPressでプラグインを作ってみた その2

おひさしぶりです。中村です。

最近暑いですね!
ということで、昨日餃子を食べに行ってきました。
一人40個!

gyo za.jpg

デブではないと思ってます。

今回も次回に引き続きWordPressでプラグイン作ってみた話をします!

おさらい

  • WPに会員登録機能を追加する

  • 会員データは自社サービスのDBへ保存させる

  • 投稿記事をお気に入りに追加でき、一覧でみれるようにする

ちなみに前回のブログで「次回はClass化します!」と書きましたが、書いててつまらないものになってしまったので飛ばします。

今回は「別DBへの参照方法について」詳しく紹介していきます。

Wordpress以外のデータを扱う

今回会員データはWordpressのDBとは異なるDBで管理します。 データ連携するには。。。

①API連携
②外部のDBへ直接接続

この2点になると思います。

今回は既存システム側に使えそうなAPIが無く作成するのが めんどくさかったので、②の方法を採用しました。

※ちなみに自社サービスのDBもMySQL

別DBとの接続方法

とても難しそうに感じますが、超簡単です。

$another_db = new wpdb( ユーザー名, パスワード, DB名, ホスト名 );

これだけです。
もともとWordpressでMySQLのconnectionを行っている記述と同じものに、 ユーザー名などの接続情報を変えるだけです。

※$wpdbはそのまま使えるように、別途用意しましょう!
※MySQLを外部から接続させる設定を行う必要がありますよ

ちなみに

$another_db = mysql_connect("localhost", "root", "");

などと記述しても接続できるのですが、もともと接続していたwordpressのデータベースの接続が 切れてしまい、投稿情報などが取得できなくなってしまいます。

※footer.phpで再度接続させるという方もいらっしゃるようです http://blog.serverkurabe.com/wordpress-another-d

個人的にはPHPのコードも他と同じように記述できますし、Wordpressになるべく合わせたほうが良いと思います。

以下簡単に使い方をご紹介〜

Select

$users = $another_db->get_results($another_db->prepare("
	SELECT *
	FROM users
	WHERE id = %d
	LIMIT 1
", $user_id));

ほとんどSQLのまんまですねー。
SQLインジェクション対策のために、「prepare」は必ず使ってください。

INSERT

$another_db->insert('users',
	array(
		'name' => $name,
		'mail' => $mail,
		'age' => $age,
		'created_at' => current_time('mysql')
	),
	array(
		'%s',
		'%s',
		'%d',
		'%s'
	)
);

こちらも見たまんまですねw
現在時刻を入れたい場合に、「current_time('mysql')」と指定するようです。

UPDATE文もほぼ同じなので、割愛します。

その他

「query(好きなSQL)」が書けます。 トランザクションなんかに使ってました。

$another_db->query('START TRANSACTION');
$another_db->query('COMMIT');

以上です。
思った以上に簡単に他DBのデータとの連携が可能なので、 ぜひ皆さんもお試しあれ。

こちらからは以上です!