こんにちは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の記事にデータベーステーブルの内容を表示する方法をご紹介しました。
この記事が皆様の参考になれば幸いです。ではまた。
・以下の記事を参考にさせて頂きました。


 
  
  
  
  


コメント