簡體   English   中英

具有類,名稱空間和psr-0自動加載功能的Wordpress插件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM