Плагин 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 в классе или что-то еще не так?

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

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

1 ответ

Решение

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

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

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
Другие вопросы по тегам