0

私はこの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 を手動で要求できますか、それとも何か問題がありますか?

非常に長い質問で申し訳ありません...

ウルリック・マッカードル

4

1 に答える 1

1

WP マニュアルによると、関数を使用するには、まずその関数を含むファイルをdbDelta含める必要があります。upgrade

したがって、上記のコードに次の行を追加dbDelta($sql)すると、問題が解決するはずです。

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
于 2015-04-24T13:01:02.780 に答える