Создание произвольных таблиц в WordPress

WordPress

При создании плагина для WordPress может возникнуть необходимость сохранять данные в базу данных WordPress. Есть несколько способов решения данной задачи. Можно создать страницу настроек, используя Settings API, либо сохранять данные прямо в таблицу с опциями, используя update_option() и get_option() или создать свою собственную таблицу в базе данных.

В данном примере будет рассмотрена возможность создания произвольной таблицы с использованием возможностей WordPress.

Прежде чем что-то записать в таблицу нужно быть уверенным, что таблица существует. Именно поэтому во время активации плагина надо эту таблицу создать.

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

Создание таблиц wordpress при активации плагина

Чтобы быть уверенным, что таблица существует, ее необходимо создать при активации плагина. Для этого используют хук – register_activation_hook(), который может содержать два параметра – основной файл плагина и название функции, которую надо выполнить при активации.

В основном файле плагина вы можете написать следующий код:

При создании таблиц в WordPress важно соблюдать стандарты и не забыть указать префиксы таблиц. Стандартным префиксом является сочетание wp_, но вы можете изменить этот префикс либо во время установки WordPress, либо отредактировав файл wp-config.php. Для того, что бы избежать ошибки указания префика необходимо использовать данные из объекта $wpdb.

Разница между свойствами prefix и base_prefix видна при использовании режима мультисайт. При использовании $wpdb->prefix возвращается префикс для текущего сайта, а при использовании $wpdb->base_prefix возвращается значение указанное в wp-config.php.

Для создания таблицы в WordPress необходимо написать SQL запрос и поместить его в специальную переменную, чтобы потом вставить в функцию dbDelta().

Функция dbDelta() проверит базу данных на предмет существования в ней таблицы, указанной в запросе, и если такая таблица уже существует запрос не будет выполняться повторно.

Что бы функция dbDelta() была доступна, перед ее вызовом надо позаботиться о том, что бы подключить содержащий ее файл /wp-admin/includes/upgrade.php.

После того, как плагин будет вновь активирован таблица будет создана.

Добавление информации в произвольную таблицу

Для добавления данных во вновь созданную таблицу потребуется вновь использовать объект $wpdb, который содержит метод insert(). Этот метод позволяет добавлять данные в существующие таблицы.

Метод insert() имеет три параметра: название таблицы, массив данных для вставки и формат вставляемых данных. Формат данных указывается для предотвращения конфликтов типов данных.

Получение данных из произвольной таблицы

Для извлечения данных из таблицы используется все тот же $wpdb объект. Есть два способа получить данные, метод $wpdb->get_row() и метод $wpdb->get_results().

Метод get_row() возвращает только одну строку, его следует использовать при запросе первичного ключа таблицы.

Метод get_results() вернет все строки, удовлетворяющие строке запроса.

Для выполнения каких-либо функций при дизактивации плагина используют хук – register_deactivation_hook().

Удаление таблицы при деинсталяции плагина

Чтобы удалить таблицу при деинсталяции плагина используется хук – register_uninstall_hook().

Подробнее об объекте $wpdb читайте здесь(статья на английском).

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

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

Вступайте в нашу группу в VK

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

ИП Исаенко А.В.

ОГРНИП 317774600344403

ИНН 773770600180