为什么我的全局变量不能正确解析?

时间:2010-03-07 20:11:05

标签: php wordpress scope global-variables

这是我的插件激活码

$classified_category_name = 'classified';
$credit_table_name = 'credits';
$credit_table_version = 0.1;

register_activation_hook(__FILE__, 'LBH_Classifieds_Activate');

function LBH_Classifieds_Activate()
{
    global $wpdb;
    global $classified_category_name;
    global $credit_table_name;
    global $credit_table_version;
    $table_name = $wpdb->prefix . $credit_table_name;
    if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
            $sql = "CREATE TABLE " . $table_name . " (
                    time bigint(11) DEFAULT 0 NOT NULL,
                    amount tinyint(3) DEFAULT 0 NOT NULL,
                    username varchar(50) NOT NULL,
                    UNIQUE KEY username (username)
            );";
            require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
            dbDelta($sql);
    }
    add_option('lbh_db_version', $credit_table_version);
}

但全局变量是空的。

此外,有没有办法从插件中打印任何信息?我已经尝试返回一个WP_Error,抛出一个WP_Error,而我所能获得的只是一个大黄色框,大多是空的,“插件无法激活,因为它触发了一个致命的错误。”

1 个答案:

答案 0 :(得分:1)

  

当激活发生时,你的插件包含在另一个函数中,然后你的myplugin_activate()从你的插件被激活的那个函数内(特别是在activate_plugin()函数内)调用。因此,主体变量属于activate_plugin()函数的范围,并且不是全局变量,除非您明确声明其全局范围

请参阅本说明的有关变量范围的其余部分:http://codex.wordpress.org/Function_Reference/register_activation_hook#A_Note_on_Variable_Scope