WordPressをインストールしているデータベース内に独自のテーブル作って、WordPressの管理画面内にある投稿の編集画面からそのテーブルに対してデータを追加・編集・削除をさせたい、という事は僕はよくあります。
その場合「データベース内にテーブルがあるかどうか」をまずは判別して、条件分岐させて処理を変えたいなと思いました。
以下にその方法を書きましたので、似たようなことをされたい方はご参考ください。
その前に、知っておくと役に立つデータベース名の定義
WordPressをインストールしたときに作られる「wp-config.php」ファイル内に、以下の記述があります。
/** WordPress のためのデータベース名 */ define('DB_NAME', 'mydb');
上の記述では「mydb」というデータベース名が定義されています。これを利用しましょう。
WordPressのインストールされたデータベース内に特定のテーブルがあるかどうか判別する方法
例えば下のような感じで「SHOW TABLES」を使ってSQL文を書いて判別します。
テーブルがあるかどうか判別
<?php global $wpdb; //グローバル変数「$wpdb」を使うよっていう記述 $table_search = $wpdb->get_row("SHOW TABLES FROM " . DB_NAME . " LIKE '" . $wpdb->posts . "'"); //「$wpdb->posts」テーブルがあるかどうか探す if( $wpdb->num_rows == 1 ){ //結果を判別して条件分岐 //テーブルがある場合の処理 echo 'テーブルあるよ'; } else { //テーブルがない場合の処理 echo 'テーブルないよ'; } ?>
出力結果
テーブルあるよ
コードがやっていること
「$wpdb->posts」はWordPressをインストールした直後にデフォルトで作られるテーブルの1つとして、投稿に関するテーブル名が格納されています。特別な事をしていない限りはテーブルは存在していると思います。
「$wpdb->num_rows」は直近の$wpdbクエリの結果の行数を取得できるので、定義済みのデータベース名「mydb」から、テーブルが存在していれば「1つ見つかったよ」という意味で「1」が取得できます。
この値を利用して、取得した行数で条件分岐をして、テーブルがある場合とない場合で処理を分けている、という感じです。
この方法は、例えば「記事別投票データ」「人気記事データ」「ソーシャルカウント数データ」などを独自のテーブルに保存するようなWordPressプラグインがあったとして、まずはテーブルがあるかどうかを判別して、テーブルがない場合は新しく作る、みたいなときにも使えるので便利だなぁと思います。
このページを共有する