为什么我的全局变量不能正确解析?
问题描述:
这里是我的插件激活码为什么我的全局变量不能正确解析?
$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,而我所能得到的只是一个大的黄色框,大部分是空的,“插件无法被激活,因为它引发了一个致命的错误。”
答
当激活时,你的插件从另一功能包括,然后您的myplugin_activate()从该函数内调用(具体地,activate_plugin()函数内)在其中插件被激活的点。因此,主体变量在activate_plugin()函数的范围和不是全局的,除非你明确宣布其全球范围
见本说明的变量范围的其余部分:http://codex.wordpress.org/Function_Reference/register_activation_hook#A_Note_on_Variable_Scope