こんにちはJitanTechです。
今回はWordPressで データベースからSELECT文で取得した値を表示させる方法 をご紹介します。
以下の記事では、今回紹介する方法でYouTuberの登録者ランキングを表示しています。
ではいってみましょう。
テーブルを作成する
WordPressの記事で表示するテーブルを新規で作成する時、テーブル名の先頭が wp_ になっている必要があります。この記事では、以下の画像のようにDBに2つのテーブルを新規作成しました。このテーブルからデータを取得しWordPressの記事に表示していきます。

wp_subscriber には 以下の画像のようにYouTuberの登録者数や再生数が格納されています。

ポイント①
テーブルを作成する時は テーブル名の頭にwp_ を付ける
class-wpdb.php を編集
作成したテーブルを参照するには、wp-includesフォルダの中にある class-wpdb.php ファイルに作成したテーブル名を記載する必要があります。このファイルはWordPressのバージョンによってはファイル名が違う場合があります。例えば以下の記事では wp-db.php ファイルを編集するとありますが、私のWordPressの場合は class-wpdb.php の編集が必要でした。

編集する場所
class-wpdb.php の $tables 配列の中に、作成したテーブル名を記載します。この時 wp_ を外して記載します。

ポイント②
class-wpdb.php ファイルの $tables 配列変数 に wp_ を外したテーブル名 を記載します。
functions.php を編集
外観 → テーマエディタ → functions.php にSQL文を書いて、テーブルからデータを取得します。取得したデータを画面に整形して表示させるためにHTML文も記載し、その結果を return します。


サンプルコード
以下は今回追記したプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
//子テーマ用のビジュアルエディタースタイルを適用 function wp_show_onepiece() { global $wpdb; $query = "SELECT"; $query.= " *"; $query.= " FROM"; $query.= " $wpdb->target_youtuber AA"; $query.= " LEFT JOIN $wpdb->subscriber BB ON AA.id=BB.id"; $query.= " INNER JOIN (SELECT MAX(add_date) AS add_date"; $query.= " FROM $wpdb->subscriber GROUP BY id) CC ON BB.add_date = CC.add_date GROUP BY AA.id"; $query.= " ORDER BY subscriber_count DESC"; $rows = $wpdb->get_results($query); $return_val = ""; $return_val .= "<br> OnePiece考察者ランキング(※毎日更新中) <br><hr>"; $no = 1; if ($rows) { foreach ($rows as $row) { $return_val.= "<table>"; $return_val.= "<tr>"; $return_val.= "<td colspan='4'>No.".$no." <a href=https://www.youtube.com/channel/".$row->id.">".$row->title."</td>"; $return_val.= "</tr>"; $return_val.= "<tr>"; $return_val.= "<td><img border='0' src='".$row->img88."'></td>"; $return_val.= "<td>登録者数:".$row->subscriber_count."人</td>"; $return_val.= "<td>動画数:".$row->video_count."本</td>"; $return_val.= "<td>視聴数:".$row->view_count."回</td>"; $return_val.= "</tr>"; $return_val.= "</table>"; $return_val.= "<hr>"; $no++; } } return $return_val; } add_shortcode('show_table', 'wp_show_onepiece'); |
プログラムの解説
$wpdb とは
$wpdb 変数を介して、テーブルにアクセスします。変数の宣言は global で宣言 します。
1 |
global $wpdb; |
wp_target_youtuber テーブルにアクセスする場合は 以下のようにします。
1 |
$wpdb->target_youtuber; |
add shortcode とは
functions.php で return した内容を ショートコード を介して表示することができます。
1 |
add_shortcode('記事で使用するショートコード', 'function名'); |
この ショートコード を記事の中で [] を付けて記載します。

ポイント③
functions.phpで設定した ショートコード を本文に記載します。
実行結果
以下の画像のように、テーブルに登録されているYouTuberの登録者数や再生回数を記事の中に表示することができました。

さいごに
今回はWordPressの記事にデータベーステーブルの内容を表示する方法をご紹介しました。
この記事が皆様の参考になれば幸いです。ではまた。
・以下の記事を参考にさせて頂きました。


コメント