管理項目を追加する

WordPress

これまで作ってきたプラグインは、項目が「sample_name」という1つの項目だけを取り扱ってきました。

今後は、sample_nameという項目以外にも、チェックボックス、ラジオボタン、セレクトボックス、テキストエリア、を取り扱う管理画面を作ってみるので、プラグインインストール時に実行されるテーブル作製のcreate table文を拡張してみます。

これまでは、以下のcreate文です。

CREATE TABLE {$table_name} (
id				INT NOT NULL AUTO_INCREMENT,
sample_name		VARCHAR(128),
create_date		DATETIME,
PRIMARY KEY(id)
) {$charset_collate};

これを、次のように拡張します。

CREATE TABLE {$table_name} (
id              INT NOT NULL AUTO_INCREMENT,
sample_name     VARCHAR(128),
sample_text     VARCHAR(256),
sample_check    VARCHAR(256),
sample_radio    VARCHAR(256),
sample_select   VARCHAR(256),
sample_textarea text,
create_date     DATETIME,
PRIMARY KEY(id)
) {$charset_collate};

実行されるタイミングはプラグインをインストールした時に一度実行されるので、メソッド全体では次のようになります。

/**
 * プラグインインストール時
 */
function create_tables_sample_mst()
{
    global $wpdb;

    $charset_collate = "";

    //接頭辞の追加(socal_count_cache)
    $table_name = $wpdb->prefix . 'sample_mst';

    //charsetを指定する
    if (!empty($wpdb->charset)) {
        $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset} ";
    }

    //照合順序を指定する(ある場合、通常デフォルトのutf8_general_ci)
    if (!empty($wpdb->collate)) {
        $charset_collate .= "COLLATE {$wpdb->collate}";
    }

    $sql = <<< EOL
CREATE TABLE {$table_name} (
id              INT NOT NULL AUTO_INCREMENT,
sample_name     VARCHAR(128),
sample_text     VARCHAR(256),
sample_check    VARCHAR(256),
sample_radio    VARCHAR(256),
sample_select   VARCHAR(256),
sample_textarea text,
create_date     DATETIME,
PRIMARY KEY(id)
) {$charset_collate};
EOL;

    //dbDeltaを実行する為に必要
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);

    $sample_name = 'テストデータ';

    $table_name = $wpdb->prefix . 'sample_mst';

    $wpdb->insert(
        $table_name,
        array(
            'sample_name' => $sample_name,
            'create_date' => current_time('mysql')
        ) 
    );
}

次回以降、この追加した項目に対して、「登録」「修正」「削除」「詳細」ができるように、管理画面を拡張していきます。

コメントを残す

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