ワードプレスのプラグインが有効になったときに実行する処理

下記のコードは、ワードプレスのプラグイン(自身)が有効になったときに、テーブル($wpdb->prefix . ‘mydata’)が存在しない場合にmyplugin_dbinstall()という関数を実行するコードになります。

function my_plugin_activate() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'mydata';
    if($wpdb->get_var("SHOW TABLES LIKE '".$table_name."'") != $table_name) {
        myplugin_dbinstall();
    }  
}
register_activation_hook( __FILE__, 'my_plugin_activate' );

ワードプレスのテーブルを増やすPHPコード

次にmyplugin_dbinstall()関数内にワードプレスに独自のデータベーステーブルを追加するコードを記載してまります。

function myplugin_dbinstall() {
    global $wpdb;
    $data_db_version= '1.0';

    $table_name = $wpdb->prefix . 'mydata';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE ".$table_name." (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `aaa` varchar(32) CHARACTER SET utf8 NOT NULL,
        `bbb` int(11) NOT NULL,
        INDEX (aaa),
        PRIMARY KEY  (id)
    ) ".$charset_collate.";";
    
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );

    add_option( 'data_db_version', $data_db_version );
}

このコードは、先ほどと同じ名称のテーブル($wpdb->prefix . ‘mydata’)のテーブルをその下の$sqlに代入したテーブルを生成するSQL文をワードプレスのdbDelta関数(テーブルを作ったり更新したりする場合にその差分を自動で更新してくれる便利な関数です)に通すことによりテーブルを作成します。

add_option( ‘data_db_version’の部分でこのデータベーステーブルのバージョンを任意のオプションに保存しています。後からこのバージョンを比較してテーブルの構造を変えるなどの更新を加えることも可能です。

WordPress ワードプレスのプラグインのカスタマイズ、政策のご相談ご依頼はWPドクターまでお気軽にお送りください