Я довольно новичок в этой штуковине WordPress, и теперь я создал свою собственную тему и хотел бы создать плагин, который будет обрабатывать мое слайд-шоу.
(Я должен научить этому некоторых учеников позже, поэтому я не могу просто использовать существующий плагин)
Я реализовал автозагрузчик из http://www.php-fig.org/psr/psr-0 внизу и работает нормально.
Я могу вызывать все методы в моем классе и все, так что все в порядке. Вот актуальный вопрос:
Когда
register_activation_hook(__FILE__, array('vendor\Keystroke\KeystrokeSlider', 'install'));
вызывается, затем запускается метод
class KeystrokeSlider{
const VERSION = '1.0.0';
static public function install(){
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$tableName = $wpdb->prefix . 'ks_albums';
$sql = "CREATE TABLE IF NOT EXISTS $tableName (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
PRIMARY KEY (id)
) $charset_collate;";
self::upgrade();
dbDelta($sql);
add_option('keystroke_slider_version', self::VERSION);
}
}
но dbDelta () является неопределенной функцией. Я мог видеть, что он пытался установить пространство имен перед функцией (я не знаю почему, поскольку это не метод класса, а функция, верно?). Во всяком случае, я пытался назвать это так
\dbDelta()
Это, кажется, работает, но все еще не может найти функцию. Могу ли я вручную требовать dbDelta в классе или что-то еще не так?
Извините за очень длинный вопрос …
Ульрик Макардл
Согласно WP инструкция для того, чтобы использовать dbDelta
функция, которую вы должны сначала включить upgrade
файл, который содержит эту функцию.
Поэтому добавив следующую строку кода выше dbDelta($sql)
следует решить проблему:
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
Других решений пока нет …