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