【问题标题】:Why won't my global variables properly resolve?为什么我的全局变量不能正确解析?
【发布时间】:2023-03-25 02:43:01
【问题描述】:

这是我的插件激活码

$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,我所能得到的只是一个黄色的大框,大部分是空的,上面写着“插件无法激活,因为它触发了一个致命错误。”

【问题讨论】:

    标签: php wordpress scope global-variables


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多