[英]Wordpress plugin with classes, namespaces and psr-0 autoloading
我在这个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' );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.