【发布时间】:2015-07-03 01:09:46
【问题描述】:
我对这个 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 还是有其他问题?
抱歉问了这么长的问题...
乌尔里克·麦卡德尔
【问题讨论】:
-
如果我没记错的话,
dbDelta的错误很少。您应该改用简单的查询函数。 -
根据手册:您应该需要升级类才能使用它
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );。延伸阅读:codex.wordpress.org/… -
我太笨了...谢谢...我删除了它,因为我在课堂上使用了自己的升级方法,但我完全忽略了它需要一个 wp-admin 文件...
-
我可以把它写成答案吗?
-
完美运行...再次感谢...
标签: php namespaces wordpress psr-0