我在这个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还是有其他错误?
很抱歉很长的问题......
Ulrik McArdle
答案 0 :(得分:1)
根据WP manual,为了使用dbDelta
功能,您首先需要包含包含该功能的upgrade
文件。
因此,在dbDelta($sql)
之上添加以下代码行可以解决问题:
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );