コーディングはよく分からないけど、コピペはできる!という人にはおすすめです!
どうやってやるの?
今回は外部データベースを呼び出す「ショートコード」を作成し、投稿欄に張り付けます。
サンプルソースをテーマのfunction.php内にコピペして修正をします。
ショートコードは、function.phpに記入したプログラムを投稿欄などで呼び出す機能です。セキュリティ上難しい機能をカスタマイズすることができます。
MySQLの使い方を習得した人であれば、別システム等のデータベース内容を自由にWordPress内に表示させることができます。
サンプルソース
今回はショートコード呼び出し時に、データベース名と取得したい表のSQL文を指定します。
コードは3部構成になっており、DB接続、列タイトル、行内容の設定構成です。
※$wpdbのプロパティ【WordPressホストサーバ情報】を使用していますが、別サーバにも設定可能
function call_db($atts) {
extract(shortcode_atts(array( 'dbname'=>"", 'sql'=>""),$atts));
global $wpdb;
$db_user = $wpdb->dbuser; //データベース接続ユーザーの取得
$db_passwd = $wpdb->dbpassword; //データベース接続用パスワードの取得
$db_host = $wpdb->dbhost; //データベースホストの取得
$another_wpdb = new wpdb($db_user, $db_passwd, $dbname, $db_host);
//DB接続
$rows = $another_wpdb->get_results($sql);
$wdb ='<table><thead><tr>';
//カラム名をTABLEタグタイトルに変更
$columns = [];
$keys = get_object_vars($rows[0]);
foreach($keys as $key=>$value) {
$columns[] = $key;
$wdb .='<th>'.$key.'</th>';
}
$wdb .='</tr></thead><tbody>';
//TABLEタグに取得行を追加
foreach($rows as $row){
$wdb .='<tr>';
foreach($columns as $column){
$wdb .='<td>'.$row->$column.'</td>';
}
$wdb .='</tr>';
}
$wdb .='</tbody></table>';
return $wdb;
}
add_shortcode("wdb", "call_db");
使用方法
投稿記事の任意の場所にショートコードを記入します。
[wdb dbname=”データベース名” sql=”表示したいSQL文“]]
※[]は半角で使ってください
表示したいSQL文を加工すれば特に変更なしでそのまま利用できます。
デモ
デモとして、下記のようなDBをテスト用に配置してあります。
データベース仕様
別データベースは下記仕様で作成する。
今回は同一サーバ(ホスト先)で運用しているのをイメージする。
- ホスト先サーバ:WordPressと同一
- データベース:ssit_test【WordPress用とは別】
- デモテーブル:pref【県名一覧テーブル】
※ホスト先は別サーバでも可能(セキュリティは別途検討下さい。)
実行結果
[wdb dbname=”ssit_test” sql=”SELECT * FROM pref WHERE area_name=’中部’“]
pref_id | pref_name | capital_name | area_name |
---|---|---|---|
21 | 岐阜県 | 岐阜市 | 中部 |
22 | 静岡県 | 静岡市 | 中部 |
23 | 愛知県 | 名古屋市 | 中部 |
24 | 三重県 | 津市 | 中部 |
※aタグを組み合わせれば表からリンクをすることもできます。
実行結果2
SQL文でカラム名を指定すれば日本語表記も可能です。
[wdb dbname=”ssit_test” sql=”SELECT pref_id AS 県ID, pref_name AS 県名, capital_name AS 県庁所在地, area_name AS 地域名 FROM pref WHERE area_name=’中部’“]
県ID | 県名 | 県庁所在地 | 地域名 |
---|---|---|---|
21 | 岐阜県 | 岐阜市 | 中部 |
22 | 静岡県 | 静岡市 | 中部 |
23 | 愛知県 | 名古屋市 | 中部 |
24 | 三重県 | 津市 | 中部 |
WebAPIのデータを表示したい!という人はこちらの記事

まとめ
WordPressは使い勝手が良いですが、セキュリティの関係上プログラミングなどの要素はカプセル化されています。
プラグインやテーマそのものはハードルが高いなという人にもおすすめです。
とりあえず他のシステムのデータを表示したいという人にはオススメです。
PHPでのデータベース接続は通常PDOオブジェクトを使用しますが、設計思想の関係からwpdbオブジェクトを使用します。