0

私はWordPressテーマに取り組んでおり、自分のテーマクラス内から$wpdbクラスを使用しようとしています。次のSQLクエリを使用しようとすると、$wpdb->options変数が空白になり、エラーが発生します。

global $wpdb;
$wpdb->query("UPDATE ". $wpdb->options ." SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';");

作成したクラス内でこのコードを使用しています。

これは、クラスの高度に縮小されたサンプルです。

class Theme_Class {

    function init($options) {

        /* Load theme's functions. */
        $this->functions();

    }

    function plugins() {
        global $wpdb;

        /* Auto plugin activation */
        if(get_option('morphius_int_plugins', '0') == '0') {

            $wpdb->query("UPDATE ". $wpdb->options ." SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';");
            $wpdb->query("UPDATE ". $wpdb->sitemeta ." SET meta_value = 'a:0:{}' WHERE meta_key = 'active_plugins';");
            update_option('morphius_int_plugins', '1');
        }

    }
}

$ wpdb変数を適切にグローバル化していませんか?どんな助けでも大歓迎です。

編集

私がこれまでに理解できたことから。問題の原因はSQL構文の引用符のようです。クエリをに変更した場合

$wpdb->query("UPDATE $wpdb->options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';");

エラーなしで動作するようです。

4

1 に答える 1

0

$wpdb->prefix代わりに使用することができます:

global $wpdb;
$wpdb->query("UPDATE ". $wpdb->prefix ."options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';");

テーブルをチェックアウトして、オプション テーブルがあるかどうかを確認することもできます。

print_r($wpdb->tables);
print_r($wpdb->ms_global_tables);
print_r($wpdb->global_tables);
print_r($wpdb->old_tables);

通常は を使用して動作する$wpdb->optionsはずなので、他のテーブル名にも問題がないか確認する必要があります。

于 2013-03-22T04:41:07.393 に答える