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 回答