SQL:select文を実行してデータを取得・表示してみる。その1:【33日目】WordPress1日1プラグイン

ようこそのお運びで、厚く御礼申し上げます。
33日目です。今回は、データベースからデータを取得します。

SQL、select文を実行してデータベースからデータを取得・表示してみる。

select文を実行して、データベースから必要なデータを取得し、データを変数に入れる。
ことの発端は、前回までカスタムフィールドを作って、変数をたくさん作っていたのですが、問題が発生・・・。

「カスタムフィールドの変数の一覧を取得する命令がない!?」
※バージョン3.8現在

ということで、実際にそのデータを取得してみましょう。
今回は、管理画面にメニューを作って
140219-0004
表示してみます。
140219-0005

まずは、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

wordpress1日1プラグイン

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です