В предыдущих статьях
- Создание плагина: шорткоды - как написать простейший плагин с сокращенным кодом (Shortcode) , который вставляет в запись блога ссылку на внешний сайт с тегом <noindex> и атрибутом rel="nofollow".
- Создание плагина с использованием функции WordPress add_action, который добавляет в заданное место на странице случайно выбранную фразу.
рассматриваются базовые понятия и приемы, используемые при создании плагинов WordPress. Следующий шаг - это сделать так, чтобы плагин хранил все необходимые текстовые данные не внутри php-файла, а в базе данных. Это позволит добавлять новые данные, не изменяя файл(ы) плагина.
Хранение данных плагина в базе данных WordPress
Плагин может записывать в базу данных:
- Настройки - то, что выбирает пользователь, когда устанавливает плагин. Такие данные обычно сохраняют с использованием механизма опций
- Данные - информация, добавляемая в процессе работы плагина, которая обычно связана с отдельными записями, категориями и т.д.. Данные можно хранить в отдельной таблице базы данных MySQL, которую нужно для этого создать. Также можно хранить данные как метаданные записей, так называемые пользовательские поля (Custom Fields)
Обычно плагин автоматически создает таблицу в базе данных MySQL для хранения данных во время установки плагина.
Для того чтобы автоматически создавать и обновлять таблицу базы данных:
- Нужна PHP-функция, которая создает таблицу базы данных.
- Нужна PHP-функция обновления на случай, если для новой версии плагина потребуется таблица базы данных с другой структурой.
- WordPress должен вызывать эти функции при активации/обновлении плагина.
Создание таблицы базы данных
Итак, пишем функцию с именем tbl_install, которая создает таблицу базы данных.
Префикс таблицы базы данных
В файле wp-config.php владелец сайта WordPress может определить префикс базы данных WordPress (по умолчанию это wp_). Применяемое значение префикса хранится в переменной $wpdb->prefix. (В WordPress до версии 2.1 это значение хранилось в переменной $table_prefix).
Сначала задаем имя таблицы базы данных с именем tblname:
function tbl_install () {
global $wpdb;
$table_name = $wpdb->prefix . "tblname";
Попытка найти таблицу с именем $table_name с помощью SQL-запроса SHOW TABLES (проверяем существование такой таблицы):
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
Если этой таблицы еще нет, ее нужно создать.
Создать таблицу можно с помощью прямого SQL-запроса или с помощью функции dbDelta
из файла wp-admin/includes/upgrade.php (этот файл нужно загрузить, т.к. по умолчанию он не загружается). Функция dbDelta сравнивает текущую структуру таблицы с требуемой структурой и добавляет или изменяет эту структуру, поэтому она используется для обновлений. (Примеры использования функции dbDelta можно посмотреть в файле wp-admin/upgrade-schema.php).
При использовании функции dbDelta имейте в виду, что
- Каждое поле в SQL-выражении должно располагаться на отдельной строке.
- Между словами PRIMARY KEY и определением первичного ключа должно быть два пробела
- Нужно использовать ключевое слово KEY, а не его синоним INDEX, и должен быть задан, по крайней мере, один ключ KEY.
Итак, создание или обновление таблицы:
$sql = "CREATE TABLE " . $table_name . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time bigint(11) DEFAULT '0' NOT NULL,
name tinytext NOT NULL COLLATE utf8_general_ci,
text text NOT NULL COLLATE utf8_general_ci,
url VARCHAR(55) NOT NULL COLLATE utf8_general_ci,
UNIQUE KEY id (id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
Будет создана такая таблица:

Таблица базы данных
В этой таблице для плагина, который добавляет в заданное место на странице случайно выбранную фразу, можно хранить фразы (text), а также время добавления и имена пользователей, которые добавили фразы.
Типы данных:
MEDIUMINT - целые числа от -8 388 608 до 8 388 607
BIGINT - целые числа от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
TINYTEXT - не более 255 символов
TEXT - не более 65 535 символов
VARCHAR - не более 255 символов.
(в скобках указывается заявленное максимальное количество символов)
Модификаторы:
NOT NULL - поле должно быть явно инициализировано, т.е. не может содержать неопределенное значение
AUTO_INCREMENT - при добавлении в таблицу новой записи значение этого поля будет автоматически увеличиваться на 1
DEFAULT - задает значение, используемое по умолчанию, когда значение явно не задано
COLLATE utf8_general_ci - задает сравнение (или сопоставление, collation)
UNIQUE KEY - уникальный ключ
***
См. о создании плагина в Кодексе WordPress:
Все очень внятно изложено. Мне очень понравился Ваш сайт. Жду новых постов.
бесполезный материал абсолютно....... когда что то нужно... ничего не найдешь....
впринципе мой сайт чем-то похож
Музыкальный ...? похож...
Да это все спамеры гнусные, у них любой сайт на них похож, лишь бы ссылку вставить.
Мне же интересно - почему никогда не делается проверка на ошибки? Например, на пустой рекордсет?
И почему нет примеров работы с другой базой, не основной? Иногда, имхо - логичней хранить базу рядом, а не пихать все в одну общую.
Сделал все по инструкции, все получилось, залил на сайт и вылезла одна маленькая ошибка: в шапке сайта в виде логотипа стоит кнопка главной страницы, так вот после указанных действий эта кнопка сделалась не просто логотипом на общем фоне, а визуально выделенным блоком, логотип на белом фоне, залил все назад — ошибка пропала
можешь подскажете в чем проблема?