2013-04-03 25 views

回答

3

您可以添加一個過濾器到get_user_option_{$option}其中{$option}是在wp_nav_menu_setup()函數中檢查的用戶元鍵managenav-menuscolumnshidden。如果元值是false,這是用戶第一次登錄,它將設置默認隱藏選項。如果你勾住這個,你可以設置你自己的默認值,並確保它永不返回false

// add a filter to catch unset hidden options 
add_filter('get_user_option_managenav-menuscolumnshidden', 'my_default_menuscolumnshidden', 99, 3); 
function my_default_menuscolumnshidden($result, $option, $user_id){ 
    if($option == "managenav-menuscolumnshidden"){ 
     // remove this function to prevent a loop 
     remove_filter('get_user_option_managenav-menuscolumnshidden', 'my_default_menuscolumnshidden', 99); 
     // check if it is false (first login) 
     $result = get_user_option($option); 
     if (false === $result) { 
      // update with your own defaults (omits CSS from the hidden options) 
      $result = array(0 => 'link-target', 1 => 'xfn', 2 => 'description'); 
      update_user_option($user->ID, 'managenav-menuscolumnshidden', 
       $result, 
       true); 
     } 
     // re-add filter in case it gets called again 
     add_filter('get_user_option_managenav-menuscolumnshidden', 'my_default_menuscolumnshidden', 99); 
    } 
    // if this was false before, now it is set to custom defaults 
    return $result; 
} 
+0

謝謝,我測試它... – user007

+1

我知道這是一個很老的職位,但我只是想補充一個小更正:該方法的add_filter需要4個參數。第四個是預期的參數數量。這個默認值爲1.它應該被添加到示例代碼中,否則'$ options'將不會被填充。 – Peter

+0

良好的通話 - 從來沒有實際運行過這段代碼。我會在這裏更新答案,但如果您在答案中發現錯誤,請隨時提出編輯自己的建議。 – doublesharp

相關問題