2013-04-03 24 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

相关问题