Intereting Posts
Пользовательский контроллер для видео, который добавляется из редактора Показывать только ссылки верхнего уровня в навигации по сайту Получение неправильного значения отношения в $ args в wp_Query? Можете ли вы запустить WordPress на сервере MarketLive / Java EE? Как сохранить специфический для зрителя параметр Пользовательский мета-ящик в настраиваемом типе сообщений не работает Показать сообщения из категории по группам по годам Какие журналы ошибок я могу проверить, чтобы узнать, почему обновления плагинов не работают? Как отфильтровать iframe из фида (get_post_ancestors == 2) возвращает true на 1? Редактировать сообщение meta с флажками на лицевой стороне Пользовательские заголовки для каталога плагинов WordPress pdf (25MB) – как отображать и включать загрузку? Получить текущую пользовательскую таксономию пользователя Пользовательский тип отправки как родитель страницы

Крюк, который будет использоваться при создании таблицы базы данных

Я прочитал Codex и некоторые другие учебники, описывающие процесс создания новой таблицы для WordPress.

Я считаю, что шаги довольно просты; однако, я столкнулся с небольшой проблемой.

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

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

register_activation_hook(__FILE__,'my_plugin_data_tables_install'); 

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

Solutions Collecting From Web of "Крюк, который будет использоваться при создании таблицы базы данных"

Как уже упоминалось, after_switch_theme должен быть довольно хорошим выбором. Функция создания / обновления таблицы будет выполняться только при переключении тем, что должно быть примерно как активация плагина. Если вы используете dbDelta для создания и / или обновления таблицы, не должно возникнуть проблемы с созданием таблицы. Из Кодекса :

 global $wpdb; $installed_ver = get_option( "jal_db_version" ); if( $installed_ver != $jal_db_version ) { $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, name tinytext NOT NULL, text text NOT NULL, url VARCHAR(100) DEFAULT '' NOT NULL, UNIQUE KEY id (id) );"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $sql ); update_option( "jal_db_version", $jal_db_version ); } 

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