Создание своих таблиц в базе данных wordpress.

Работа с базой данныхКомментариев нет

В данной статье мы разберем как можно создать свою таблицу в базе данных вордпресс, а так же как можно получить, добавить и извлечь информацию из наших таблиц.

Для начала я считаю нужным сказать что в wordpress существует 2 типа данных для сохранения.

Первый — это установочная информация, так называемые настройки(опции пользователя), о которым я говорил в этой статье:  Сохранение своих настроек в wordpress. Такие данные обычно сохраняются в базе данных при активации шаблона или плагина, и не часто изменяются.

Второй — данные, эта информация которая которая может добавляться, изменяться и извлекаться в любой период эксплуатирования плагина(или шаблона). Для такой информации и нужно создавать свои таблицы в базе. Именно об это типе сохраняемых данных wordpress мы и поговорим в этой статье.

Перейдем непосредственно к делу.

Создание таблиц в базе данных

Перед тем как мы создадим нашу таблицу, нужно поговорить о некоторых нюансах которые следует учитывать.

Префикс таблиц в базе данных -при установки вордпресс, пользователю предлагается прописать префикс для таблиц в базе данных. По умолчанию он «wp_«. Также данный префикс можно изменить в файле «wp-config.php». В связи с этим мы заранее не знаем каким может быть префикс у таблиц на сайте у пользователя. Префик для таблиц вордпресс можно получить через глобальную переменную $wpdb (её заранее нужно объявить), вот таким образом $wpdb->prefix. Приведу пример получения префикса таблиц в wordpress.

Проверка на существование таблицы — перед добавлением своей таблицы, нам нужно проверить не существует ли уже таблицы с таким названием. Данная проверка поможет нам повторно не выполнять запрос на создание новой таблицы. Так же данная проверка дает нам знать что таблица была успешно установлена нашим плагином. Это полезно если вы используете плагин и при активации устанавливаете свои таблицу(то есть, если пользователь уже активировал ваш плагин, и таблица уже есть, то нам не нужно выполнять код добавления таблицы если пользователь повторно активирует плагин).  Вот проверка на существование таблицы в базе данных wordpress:

Теперь пришло время поговорить непосредственно о том как мы будем добавлять нашу таблицу в базу. Мы не будем напрямую делать SQL запрос в базу, а вместо этого воспользуемся встроенной в wordpress функцией dbDelta. Данная функция сделает добавление таблицы более безопасно, так как она очень придирчиво относится к данным. Так же стоить учесть что функция dbDelta находится в файле wp-admin/includes/upgrade.php, который по умолчанию не подключается, и нам придется подключить его вручную.

Перед тем как привести пример добавления таблицы с помощью dbDelta, хочется  отметить некоторые моменты связанные с ее работой:

  • В выражении SQL необходимо писать каждое поле в отдельной строке.
  • Необходимы два пробела между словами PRIMARY KEY и определением primary key.
  • Необходимо использовать ключевое слово KEY , а не его синоним INDEX . Так же, необходимо обозначить как минимум один KEY.

Ну а теперь перейдем к самому интересному, это примеру:

В данном примере мы создадим или обновим таблицу с именем $table_name(о значении этой переменной я говорил выше, в примере в префиксами к таблицам)

Добавление данных в таблицу

В главе выше мы создали нашу новую таблицу в базе данных. Теперь нам нужно добавить новый данные в нашу таблицу. Сразу приведу пример функции добавления строки в базу:

Теперь подробнее поговорим о добавлении данных в произвольную таблицу.

Начнем с того что таблица в которую мы добавляем данные называется «wp_onwp_price«(wp_ — данный префикс может быть другой, об этом говорилось выше). Сама таблица состоит из строк id(автоинкремент) — заполняется автоматически, id_user — id пользователя, id_product — id продукта, price — цена и date — дата.

Теперь немного о действиях которые мы выполняем в этом коде. Мы с помощью функции onwp_insert_item() — передаем 3 значения $id_user, $id_product, $price. Мы не передаем id — так как он генерируется автоматически(при добавлении таблицы в базу было прописано:  id mediumint(9) NOT NULL AUTO_INCREMENT) и date — это значение мы заполняем текущей датой. Все 3 переменных $id_user, $id_product, $price перед тем как записать в базу с помощью функции $wpdb->insert мы обработаем с помощью esc_sql. Это делается для безопасности. esc_sql — подготавливает строку к использованию в SQL запросе. Защищает от SQL инъекций(по типу PHP addslashes() — только работает с массивами). В место .. можно использовать $wpdb->prepare(), более подробнее смотрите тут: wpdb Class.

После того как мы обработали данные, получим полное название таблицы с префиксом:  $table_name = $wpdb->get_blog_prefix() . ‘onwp_price’;

$wpdb->insert

И завершающее действие это непосредственное добавление данных  в таблицу. Функция $wpdb->insert( $table, $data, $format ) — добавляет строку в таблицу и принимает следующие параметры:

table(строка) название таблицы в которую будем вставлять данные.
data(строка) Данные которые нужно вставить (‘колонка куда вставлять’ => ‘что вставлять’).
format(строка) Формат данных который будет ассоциирован с указанными значениями в параметре $data. Если не указать, то для всех значений $data будет указан формат строки. Возможные форматы данных: %s — строка; %d — целое число и %f — дробное число. При указании формата, WordPress переводит переданные данные в указанный формат перед тем, как сохранить данные в базу данных.

Обновление таблицы

Если вам вдруг понадобилось обновить свою таблицу, например вам нужно добавить новые столбцы. То в этом нет проблем. Всего лишь нужно выполнить такой же SQL запрос как и при добавлении таблицы в базу. И данные в таблице(в таблице с таким же именем) будет заменены. Дублировать код добавления не буду, он есть чуть выше в этой статье.

Вопросы по теме

Если вам стала интересна данная тема, можете посмотреть популярные вопросы с ответами по этой теме:


Будь первым кто прокомментирует статью.

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

Войти с помощью: