小金井にあるWEB制作会社の備忘録

MEMORANDUM

WordPress(ワードプレス)でテーマ有効時にオリジナルデータベースを作成

WordPress(ワードプレス)で専用の機能を実装する際にプラグインを利用することが多いなか、テーマの適応時に機能追加(データベースの作成)ができる方法があったのでメモ。

function.php(PHP)

function theme_activate() {

    global $pagenow;
    if(is_admin() && $pagenow == "themes.php" && isset($_GET["activated"])) {
        do_action('theme_activate');
	}

}

add_action('init', 'theme_activate');

function create_theme_tables() {

	global $wpdb;
	$table_name = $wpdb->prefix.'tbl_link';

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

		if(!empty($wpdb->charset)){
			$charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset} ";
		}
		if(!empty($wpdb->collate)){
			$charset_collate .= "COLLATE {$wpdb->collate}";
		}
		$sql = "CREATE TABLE {$table_name} (
		  `id` int(11) NOT NULL AUTO_INCREMENT,
		  `name` varchar(255) NOT NULL,
		  `state` int(11) NOT NULL,
		  `url` varchar(255) NOT NULL,
		  PRIMARY KEY (`id`)
		) {$charset_collate} AUTO_INCREMENT=1;";
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
    }

}

add_action('theme_activate', 'create_theme_tables');