设置外观的默认屏幕选项->菜单

时间:2013-02-22 作者:byronyasgur

是否可以控制屏幕选项Appearance>Menus. 我正在处理一个主题,并安装了一个全新的Wordpress,我从未接触过任何屏幕选项(至少没有在外观>菜单下)。我有3种自定义帖子类型。其中一个“失踪”。我调查了屏幕选项,结果发现其中一个未选中,而另外两个已选中。我不知道我是怎么做到这一点的,但我希望它对用户来说是一致的。有人对这方面有什么想法或信息吗?理想情况下,我想知道所有三种自定义帖子类型都将在新安装或新用户上进行检查。

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

此选项存储在wp_usermeta 带有meta_key 名称:metaboxhidden_nav-menus.

如果我们把所有的盒子都藏起来,这就是meta_value 选项:

array(
    "nav-menu-theme-locations", 
    "add-custom-links", 
    "add-post", 
    "add-page", 
    "add-portfolio", 
    "add-category", 
    "add-post_tag", 
    "add-post_format", 
    "add-location"
)
有一个CPT,portfolio. 如果我们希望它在用户每次访问页面时始终可见(/wp-admin/nav-menus.php), 此代码将执行以下操作:

add_filter( \'get_user_option_metaboxhidden_nav-menus\', \'cpt_always_visible_wpse_87882\', 10, 3 );

function cpt_always_visible_wpse_87882( $result, $option, $user )
{ 
    if( in_array( \'add-portfolio\', $result ) )
        $result = array_diff( $result, array( \'add-portfolio\' ) );

    //$show_boxes = array( \'cpt1\', \'cpt2\', \'cpt3\' );
    //if( in_array( $show_boxes, $result ) )
    //  $result = array_diff( $result, $show_boxes );

    return $result;
}
但这会强制CPT可见,即使用户取消选中屏幕选项。在下次访问该页面时,该框将再次可见。

要在用户注册后执行一次,操作挂钩user_register 应与函数一起使用update_user_meta.

要在新安装上执行此操作,请自定义install.php 可以使用。也许有另一种技术可用,但不确定。。。

结束

相关推荐

Remove menus and submenus

所以我找到了一些方便的代码片段来帮助删除管理菜单项。但是,我对子菜单项有问题。我想保留外观菜单,但去掉主题、小部件和编辑器。function remove_menus() { global $menu; global $current_user; get_currentuserinfo(); if($current_user->user_login == \'username\') { $restricted = array(__(\'