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

#php #mysql #wordpress

#php #mysql #wordpress

Вопрос:

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

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

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

При отладке, установленной в true, уведомление, которое я вижу, — это уведомление об использовании неопределенной константы, которая является именем функции, которое я использую в register_activation_hook в конце кода.

Я так ценю любую помощь в этом!

 <?php
/*
Plugin Name: Kati’s Custom School Table
Description: This plugin will create a custom table to store user school based data in a more specialized way.
Author: KatiKati
Version: 1.0
*/

function customtables_activate()
{
    global $wpdb;

    $table_name = $wpdb->prefix . 'school';

    $sql = "CREATE TABLE $table_name (
    fk_ggid int(6) NOT NULL,
    /* is_in fields contain the current school enrollment information of the child account
    */
    is_in_school VARCHAR(100) NULL,
    is_in_teacher VARCHAR(100) NULL,
    is_in_kinder TINYINT(1) default 0,
    is_in_grade1 TINYINT(1) default 0,
    is_in_grade2 TINYINT(1) default 0,
    is_in_grade3 TINYINT(1) default 0,
    is_in_grade4 TINYINT(1) default 0,
    is_in_grade5 TINYINT(1) default 0,
    is_in_grade6 TINYINT(1) default 0,
    is_in_grade7 TINYINT(1) default 0,
    is_in_grade8 TINYINT(1) default 0,
    is_in_grade9 TINYINT(1) default 0,
    is_in_grade10 TINYINT(1) default 0,
    is_in_grade11 TINYINT(1) default 0,
    is_in_grade12 TINYINT(1) default 0,
    PRIMARY KEY  (fk_ggid)
    );";

    require_once(ABSPATH . ‘wp-admin/includes/upgrade.php’);
    dbDelta($sql);
}

register_activation_hook(__FILE__, ‘customtables_activate’);
  

Комментарии:

1. Некоторые из многих других вещей, которые я пробовал: —- СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ ОНА НЕ СУЩЕСТВУЕТ —- Перемещение глобального $ wpdb; за пределы функции —- Включая фрагменты $ charset_collate —- Заключение в кавычки всех имен полей

2. Возможно, проблема в форматировании, но одинарные кавычки в вашем register_activation_hook(__FILE__, ‘customtables_activate’); выглядят странно. Используйте обычные одинарные кавычки, как вы делали в $wpdb->prefix . 'school';

3. Вы, сэр, мой герой! Я как-то пропускал это каждый раз, когда просматривал это. Я не могу сказать вам, сколько раз я менял так много разных вещей в своем коде, но это всегда выглядело правильно и никогда не привлекало моего внимания. Я так рад, что наконец-то у меня есть таблицы!!

4. Приятно слышать, рад, что смог помочь.