Warning: Declaration of FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Tags::wrap($content, $before, $sep, $after) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Category::wrap($content, $sep, $parents) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Thumbnail::wrap($html, $post_id, $post_thumbnail_id, $size) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Meta::wrap($data, $post_id, $key, $ui, $single) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Widget::wrap($params) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/widget.php on line 0

Warning: Declaration of FEE_Field_Comment::wrap($content) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Single_Title::wrap($title) should be compatible with FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Option::wrap($content, $key, $ui) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0
WordPressをインストールしたMySQLデータベースとは別のデータベースに接続する場合の注意点 | Sabakura Blog

WordPressをインストールしたMySQLデータベースとは別のデータベースに接続する場合の注意点

WordPressの利用にはMySQLデータベースの利用が必須になっています。
というのも、投稿記事の内容からコメント、カテゴリやタグの情報まですべてがMySQLのデータベース内で管理されているからです。

しかしサイトを色々とカスタマイズするなかで、このWordPressをインストールしたデータベースとは別のデータベースの情報を参照したい場合もあります。
もちろんこれは可能なわけですが、その際、最後にWordPressのデータベースに再接続する必要がありますので注意してください。

以下、具体例を用いながら説明してみます。

WordPressとは別のMySQLデータベースから情報を取り出す

ここでは仮に、WordPressをインストールしたデータベースを「wpdb」、そしてユーザーの情報を格納しているデータベースを「userdb」とします。

このときWordPress内でユーザーの情報を表示するには、まずuserdbに接続します。
※なお記事やページの本文中でPHPを実行するには、runPHPプラグインを別途導入する必要があります。

<?php
mysql_connect("MySQLサーバ名", "ユーザー名", "パスワード") or die("DB接続エラー");
mysql_select_db("userdb") or die("DB接続エラー");
?>

これでuserdbに接続し、そこから自由にユーザー情報を引き出すことができます。

ただし、このままだとWordPressのデータベースからは切り離されています。そのため、たとえばフッターなど、ユーザー情報を表示した場所以下の描画が行われなくなってしまいます。

そのためユーザー情報の取り出しが終わったら、以下のようにして再度WordPressのデータベースに接続してください。

mysql_select_db("wpdb") or die("DB接続エラー");

これで問題なくWordPressは動作します。

もちろんごく簡単な情報であれば、わざわざ別のデータベースを作らずとも、WordPressのデータベース内に新規テーブルを作ることでも解決できます。しかし複数のテーブルを抱える場合など、別のデータベースを作る必要があるときもあるでしょう。
そうした場合には、上記の再接続の手順を忘れないように注意してください。

Comment

  1. 田中 京介

    2013-11-03 03:36

    初めまして。wordpressで使用しているDBとは別のDBへ接続してそのDBのテーブル内のデータをwordpressに表示するようにしたいと思い検索していてこちらを発見しました。

    記載されている方法を試してみようと思ったのですが、
    初めて行う方法で戸惑っております。

    function.phpに
    記載したのですが、
    >再度WordPressのデータベースに接続してください。
    のmysql_select_da(wpdb) or die (DB接続エラー)となってしまいます。

    function.phpへの記載ではなく他のテンプレートファイルでしょうか?

    お忙しい中お手数ですがご教授いただければ助かります。

  2. 田中 京介

    2013-11-03 03:37

    すいません乱文でしたので補足させてください。
    >再度WordPressのデータベースに接続してください。
    のmysql_select_da(wpdb) or die (DB接続エラー)を入力するとエラーとなってしまいます。

  3. cee_fof

    2013-11-03 20:15

    もしかすると「mysql_select_da(wpdb)」をそのままコピーされていますでしょうか。
    記事内で説明不足でしたが、記事内の「userdb」および「wpdb」は各ユーザーの環境にあわせて変更する必要があります。

    「userdb」は取り出したいデータを格納しているデータベース名、「wpbd」はWordPressのデータを格納しているデータベース名に変更してください。
    それぞれのデータベース名は使用しているレンタルサーバーやデータベース作成時にどんな名前を付けたかによって変わりますので、ご自身の環境を確認の上で指定してみてください。

  4. 斉藤 隆

    2014-04-26 09:30

    大変ためになりました。
    ありがとうございます。
    早速使って見ます。

コメントを投稿