プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【WordPress】自作テーブルを追加してデータ管理をしてみる

今回すること
WordPressの環境で使っているDB上に、オリジナルのテーブルを追加し、WordPressからそのデータを取得、表示ができるようにする。

環境

InstantWordPressを使ってローカル環境で試していく。
いきなり本番はリスクがある為、本番環境で実践する場合はバックアップを取るなど、慎重にすること。

DBにテーブルを作成する


InstantWordPressからMySql Adminをクリック


ユーザー名「root」パスワードなしでログイン


WordPressで使われているテーブルのある場所を確認


「操作」タブからテーブルを作成を選択し、任意の名前でテーブルを作成する


作成したテーブルに任意のカラムを設定する。


テーブルが追加されていることが確認できる。

DBにデータを追加する


先ほど作ったテーブルの「挿入」タブからデータを追加する。

既にデータがある場合はCSVで一気に取り込むと楽。


カラムが追加されたテーブルができる

WordPressの構築ファイル「wp-db.php」に追記する

InstantWP_4.5 >> iwpserver >> htdocs >> wordpress >> wp-includes >> wp-db.php
前項で作ったテーブルをWordPressから読みにいくことができるように、FTPソフトからWordPressの構築ファイル「wp-db.php」に以下を追記する。
変更前
[php] /**
* List of WordPress per-blog tables
*
* @since 2.5.0
* @access private
* @see wpdb::tables()
* @var array
*/
var $tables = array( ‘posts’, ‘comments’, ‘links’, ‘options’, ‘postmeta’,
‘terms’, ‘term_taxonomy’, ‘term_relationships’, ‘termmeta’, ‘commentmeta’ );
[/php] 変更後
[php] /**
* List of WordPress per-blog tables
*
* @since 2.5.0
* @access private
* @see wpdb::tables()
* @var array
*/
var $tables = array( ‘posts’, ‘comments’, ‘links’, ‘options’, ‘postmeta’,
‘terms’, ‘term_taxonomy’, ‘term_relationships’, ‘termmeta’, ‘commentmeta’, ‘items’ );
[/php]

DBのデータを取得し表示してみる

適当なページでDBからデータを取得し、表示するコードを書いてみる
[php] <?php
$results = $wpdb->get_results("SELECT name FROM $wpdb->items");
foreach ($results as $value) {
print(‘<li>’.$value->name.'</li>’);
}
?>
[/php]

結果が表示される

最後に

今回は自作テーブルを作り、その内容を表示させるのが目標でした。
既存テーブルへの操作でも、アイディア次第では様々な活用ができるかなと思います。
例えば、これまでプラグインに頼っていた人気記事の表示なども、既存のpostテーブルにWHERE句を追加することでさくっと表示できてしまいます。
機会があればそういった内容の記事もアップしたいと思います。

参考にさせていただいた記事

https://www.imamura.biz/blog/10204
http://www.webopixel.net/wordpress/113.html