Плагин WordPress с классами, пространствами имен и автозагрузкой psr-0

Я довольно новичок в этой штуковине 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 в классе или что-то еще не так?

Извините за очень длинный вопрос …

Ульрик Макардл

0

Решение

Согласно WP инструкция для того, чтобы использовать dbDelta функция, которую вы должны сначала включить upgrade файл, который содержит эту функцию.

Поэтому добавив следующую строку кода выше dbDelta($sql) следует решить проблему:

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]