#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. Приятно слышать, рад, что смог помочь.