[英]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.