WordPress テーマ有効化時に独自テーブルを追加する方法

独自テーマの有効化の際に専用テーブルをデータベースに追加する必要がありましたので、先日追加したテーマ有効化時に実行されるアクションフックポイントに追加するテーブル作成用の関数を追加しました。

独自テーブル作成

以下のテーブル作成用関数を functions.php などに追加します。

/**
 * お気に入り用テーブル作成
 */
function ag_create_table_favorites()
{
    global $wpdb;
    $table = $wpdb->prefix.'ag_favorites';

    //テーブルが存在していなければ作成する
    if ($wpdb->get_var("SHOW TABLES LIKE '$table'") != $table) {

        $sql = "
            CREATE TABLE IF NOT EXISTS `$table` (
              `id` bigint(20) unsigned NOT NULL,
              `post_id` bigint(20) unsigned NOT NULL,
              `user_id` bigint(20) unsigned NOT NULL,
              `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='お気に入り';
        ";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
        
        //インデックス作成
        $sql_alter = "
            ALTER TABLE `$table`
              ADD PRIMARY KEY (`id`),
              ADD KEY `post_id` (`post_id`),
              ADD KEY `user_id` (`user_id`);
        ";
        $wpdb->query( $sql_alter );
        
        //オートインクリメント設定
        $sql_alter = "              
            ALTER TABLE `$table`
              MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT;
        ";
        $wpdb->query( $sql_alter );            
    }
}
add_action("ag_theme_activate", "ag_create_table_favorites");

動作環境情報

エックスサーバー(x10)
PHP 7.3.14
MySQL 5.7
WordPress 5.4

関連記事

コメント

タイトルとURLをコピーしました