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 还是有其他问题?

对不起,很长的问题......

乌尔里克·麦卡德尔

4

1 回答 1

1

根据WP 手册,为了使用该dbDelta功能,您首先需要upgrade包含包含该功能的文件。

因此,在上面添加以下代码行dbDelta($sql)应该可以解决问题:

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
于 2015-04-24T13:01:02.780 回答