今回すること
WordPressの環境で使っているDB上に、オリジナルのテーブルを追加し、WordPressからそのデータを取得、表示ができるようにする。
環境
InstantWordPressを使ってローカル環境で試していく。
いきなり本番はリスクがある為、本番環境で実践する場合はバックアップを取るなど、慎重にすること。
DBにテーブルを作成する
InstantWordPressからMySql Adminをクリック
「操作」タブからテーブルを作成を選択し、任意の名前でテーブルを作成する
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