Neden küresel değişkenler düzgün çözmek değil mi?

1 Cevap php

Burada benim eklenti etkinleştirme kodu

$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);
}

ancak global değişkenler boş.

Ayrıca, bir eklenti içinde herhangi bir bilgi yazdırmak için herhangi bir yolu var mı? "Bu ölümcül bir hata tetiklenir çünkü eklenti devreye olamazdı." Ile, ben bir WP_Error atma, bir WP_Error dönen denedim, ve ben hiç alabilirsiniz tüm çoğunlukla boş bir büyük sarı bir kutu vardır

Thanks, Joe

1 Cevap

Aktivasyon ortaya çıktığında, eklenti başka bir işlevden dahil edilir ve ardından myplugin_activate () sizin eklenti devreye noktada (activate_plugin () işlevi içinde, özellikle) bu işlevin içinde denir. Açıkça global kapsamını beyan olmadıkça ana gövde değişkenler, activate_plugin () fonksiyonu kapsamında bu nedenle ve küresel değil

Değişken kapsamında bu notun kalan bakınız: http://codex.wordpress.org/Function_Reference/register_activation_hook#A_Note_on_Variable_Scope