Разработка сайтов на WordPress и фреймворке Yii2

Здесь вы можете заказать полный пакет услуг по разработке сайта. Начиная от написания ТЗ до программирования на PHP, JavaScript и верстке.

Как создать таблицу в БД WordPress

CMS WordPress

Создание свой таблицы для CMS WordPress может понадобится в следующих случаях:

  1. При создании своего плагина
  2. При разработки своей темы (продажа или аренда недвижимости, авто, т. п.)

В своих проектах, для создании таблиц или импорта данных в БД, я использую 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()};");	
});

Выше описанный код нужно разместить в главном файле вашего плагина. Иначе работать не будет (по крайней мере у меня не срабатывало).
Здесь все достаточно просто.

  1. На всякий случай подключаем файл с нужным набором функций «upgrade.php»
  2. Используем глобальную переменную «$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, он у меня не срабатывал.
А теперь работает, чудо 🙂

Внимание. Все выше приведенные примеры, работают лишь для плагинов. И не срабатывают при инициализации темы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *