Создание свой таблицы для CMS WordPress может понадобится в следующих случаях:
- При создании своего плагина
- При разработки своей темы (продажа или аренда недвижимости, авто, т. п.)
В своих проектах, для создании таблиц или импорта данных в БД, я использую WP функцию «dbDelta», в хуке «register_activation_hook()». Пример кода:
register_activation_hook(__FILE__, function() { global $wpdb; require_once(ABSPATH.'wp-admin/includes/upgrade.php'); dbDelta("CREATE TABLE IF NOT EXISTS `{$wpdb -> prefix}my_table` ( `id` INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `title` VARCHAR(255) NOT NULL, `date_create` INT(10) UNSIGNED NOT NULL ) {$wpdb -> get_charset_collate()};"); });
Выше описанный код нужно разместить в главном файле вашего плагина. Иначе работать не будет (по крайней мере у меня не срабатывало).
Здесь все достаточно просто.
- На всякий случай подключаем файл с нужным набором функций «upgrade.php»
- Используем глобальную переменную «$wpdb» для получения текущего префикса БД и текущей кодировки «$wpdb -> get_charset_collate()»
Второй способ создания таблиц, основан на использования ф-и «$wpdb -> query()». И выглядит следующим образом:
register_activation_hook(__FILE__, function() { global $wpdb; $wpdb -> query("CREATE TABLE IF NOT EXISTS `{$wpdb -> prefix}my_table` ( `id` INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `title` VARCHAR(255) NOT NULL, `date_create` INT(10) UNSIGNED NOT NULL ) {$wpdb -> get_charset_collate()};"); });
По стечению странных обстоятельств, о втором способе я узнал позже. Хотя с уверенностью могу сказать что и пробовал и его но на начальном пути изучения WP, он у меня не срабатывал.
А теперь работает, чудо 🙂
Внимание. Все выше приведенные примеры, работают лишь для плагинов. И не срабатывают при инициализации темы.