テーブルの作成 (サンプルデータの登録と確認) – WordPressプラグインの開発 7

投稿者: | 2018年1月20日

作成したテーブルに、サンプルデータを登録する関数を作成します。

fow_install_sample_data関数の作成

onlinehelp_db.phpに、以下の関数を追加します。

/**
 * テーブルにサンプルデータを登録する
 */
function fow_install_sample_data()
{
    global $wpdb;

    $title = 'オンラインヘルプへようこそ';
    $body = 'プラグインのインストールに成功しました。<br />これはサンプルのデータです。これを編集して、最初の項目を作成してください。';

    $data = array(
        'title' => $title,
        'helpbody' => $body,
    );

    $data_format = array(
        '%s',
        '%s',
    );

    $wpdb->insert($wpdb->prefix . FOW_OH_TABLES['helpbody'], $data, $data_format);
}

(49行目)
データベースとやりとりするための、$wpdbグローバル変数です。

(51-52行目)
テーブルに登録するサンプルデータです。

(54-59行目)
登録するデータと、データの形式を指定する配列です。
$dataには、フィールド名=>データ の連想配列を入れます。
$data_formatには、データの型を指定します。指定できるのは、

  • %s 文字列
  • %d 整数
  • %f 実数

の3種類だけです。

(64行目)
$wpdbオブジェクトのinsertメソッドで、INSERT文が実行されます。

アクションフックの登録

作成したfow_install_tables関数と、fow_install_sample_dataを実行すれば、テーブルが作成され、サンプルデータが登録されます。しかし、プラグインのコードが実行されるたびに、これらの関数が呼び出されるのは困ります。プラグインを初めて使おうとしたときに、一度だけ実行されれば充分です。
このようなときはアクションフックを使用します。アクションフックとは、何かの動作(アクション)がなされるとき、その動作のついでに実行される処理だと考えてください。
インストールしたプラグインが有効化されるとき、register_activation_hookアクションが発生します。このアクションにフック(実行したい関数を引っかける)すれば、プラグインが有効化されたときだけ、テーブルを作成したり、サンプルデータを登録したりできるようになります。

アクションフックはonlinehelp_main.phpに記述します。onlinehelp_main.phpに以下のコードを追加します。

const FOW_OH_PLUGIN_DIR = WP_PLUGIN_DIR . '/fow-online-help';

require_once FOW_OH_PLUGIN_DIR . '/onlinehelp_consts.php';
require_once FOW_OH_PLUGIN_DIR . '/onlinehelp_db.php';

/**
 * フック
 */
register_activation_hook(__FILE__, 'fow_install_tables');
register_activation_hook(__FILE__, 'fow_install_sample_data');

(12行目)
オンラインヘルプのプラグインがインストールされているディレクトリーのパスを、FOW_OH_PLUGIN_DIR定数に定義します。

(14-15行目)
onlinehelp_consts.php と onlinehelp_db.php をインクルードします。

(20-21行目)
作成したfow_install_tables関数と、fow_install_sample_data関数を、プラグイン有効化の際のアクションフックに登録します。これで、プラグインが有効化されたときだけ、2つの関数が実行されるようになります。

動作確認

テーブルが作成され、サンプルデータが登録されるか確認してみましょう。
もしプラグインがすでに有効化されているなら、プラグインをいったん停止します。
オンラインヘルプのプラグインを有効化してみましょう。エラーメッセージなどが表示されず、正常に有効化できれば、テーブルができているはずです。テーブルができているかどうかを確認するには、シェルなどからSQL文を入れて確認するか、HeidiSQLのようなGUIツールを使います。
図はHeidiSQLでデータベースを確認したところです。このようにテーブルが作成されており、サンプルデータが登録されていることが分かります。
作成されたテーブル
 

参考リンク

 

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)