ようこそのお運びで、厚く御礼申し上げます。
33日目です。今回は、データベースからデータを取得します。
SQL、select文を実行してデータベースからデータを取得・表示してみる。
select文を実行して、データベースから必要なデータを取得し、データを変数に入れる。
ことの発端は、前回までカスタムフィールドを作って、変数をたくさん作っていたのですが、問題が発生・・・。
「カスタムフィールドの変数の一覧を取得する命令がない!?」
※バージョン3.8現在
ということで、実際にそのデータを取得してみましょう。
今回は、管理画面にメニューを作って
表示してみます。
まずは、function.phpに書いてみます。
では、function.phpに以下のコードを書きました。
//オブジェクトを生成 new Paka3SQLSelect0; //クラス定義 class Paka3SQLSelect0{ //コンストラクタ function __construct() { //################### //ここではSQL文を記入する //################### global $wpdb; $this->paka3_sql="SELECT meta_key FROM {$wpdb->postmeta} GROUP BY meta_key"; //################### add_action('admin_menu', array($this, 'adminAddMenu')); } //管理メニューの設定 function adminAddMenu() { add_submenu_page("options-general.php", 'select文を試す)', 'select文を試す', 'edit_themes', 'sqlselect0_setting', array($this,'paka3_sql_page')); } //表示する内容と処理 function paka3_sql_page() { global $wpdb; $paka3_sql=$this->paka3_sql; //**管理画面SQL文を実行する(select文のみ)の処理 $r = $wpdb->get_col( $paka3_sql ); $paka3_sql_result =$r; //表示する内容(HTML) echo <<<EOS <style type="text/css"><!-- .paka3sql b, .paka3sql h4{color:#f00} .paka3sql textarea{width:100%;} .sql_r pre{background:#fff; padding:5pt; font-size:12pt; border:1px solid #ccc} --></style> <div class="wrap"> <h2>SQL文を実行する(//select文のみ)</h2> <h3><pre>{$paka3_sql}</pre></h3> <div class="paka3sql"> <div class="sql_r"> <h3>結果</h3> <pre> EOS; print_r($paka3_sql_result); echo <<<EOS </pre> </div> </div> EOS; } } //////////////////
ポイントはどこ?
今回はデータベースからデータを取得するということで、こちらをまずwpdbクラスについて調べてみます。(WordPress Codex日本語版:wpdb Class)
また、今回は「Paka3SQLSelect0」というクラスを作成してコードを書いていきます。
- 呼び出し:クラスオブジェクトを生成します。
//オブジェクトを生成 new Paka3SQLSelect0;
-
クラスを定義します
//クラス定義 class Paka3SQLSelect0{ //コンストラクタ(オブジェクト生成時呼出) function __construct() { //・SQL文の設定 //・管理メニューの呼び出し } //管理メニュー function adminAddMenu() { //・管理メニューの設定 } //表示する内容と処理 function paka3_sql_page() { //・グローバル変数 $wpdb //データベースに接続しますよ!って設定された変数 global $wpdb; //・$wpdbを使って、SQL分を実行してデータを取得 //・表示する内容(HTML) echo <<<EOS //ここに表示内容を記入 EOS; } }
- コンストラクタ:オブジェクト生成時に呼び出します。
・$wpdb->postmeta:接続詞付きのテーブル名を取得し、SQL文を設定。
・管理画面のメニューを呼び出します。function __construct() { //select文を設定します。 global $wpdb; $this->paka3_sql="SELECT meta_key FROM {$wpdb->postmeta} GROUP BY meta_key"; //・管理メニューの呼び出し add_action('admin_menu', array($this, 'adminAddMenu')); }
- 管理メニューの設定を行います。今回は「設定」のしたに「select文を試す」というメニューを追加します。
//管理メニューの設定 function adminAddMenu() { add_submenu_page("options-general.php", 'select文を試す)', 'select文を試す', 'edit_themes', 'sqlselect0_setting', array($this,'paka3_sql_page')); }
- グローバル変数$wpdbを設定し、SQL文を実行します。
$wpdb->get_col:多次元配列を出力(クエリによっては列が一つ)function paka3_sql_page() { global $wpdb; $paka3_sql=$this->paka3_sql; //**管理画面SQL文を実行する(select文のみ)の処理 $r = $wpdb->get_col( $paka3_sql ); $paka3_sql_result =$r; //3.表示する内容(HTML) echo <<<EOS //※省略... EOS; }
コードをプラグイン用のファイルにします
それではfunction.phpに書いたコードを消して、
「paka3_Sql_Select0.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回のデータベースからのデータ取得は、あくまでも入門編の一例です。$wpdb->get_colの他にも命令があり、様々な形式でデータの取得が可能です。もうちょっとデータベースの閲覧については続きます。プラグインにする必要は・・・ツッコまないで(o_ _)o