wordpress
  • class
  • function
  • wpdb
  • 2013-03-21 35 views 0 likes 
    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';"); 
    

    它似乎工作沒有錯誤。

    +0

    它產生了什麼錯誤? – RRikesh 2013-03-22 09:54:49

    +0

    您在「SET」附近的SQL語句中有錯誤。 – Jason 2013-03-22 21:56:14

    回答

    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 ,所以你應該檢查其他表名是否有問題。

    相關問題