我正在寻找一种方法来更改帖子编辑器中的默认屏幕选项。 我想默认隐藏某些选项。我正在组建一个家庭食谱网站,不希望用太多选项压倒用户。我不想以每个用户身份登录并手动更改其选项。我已经梳理了WP核心文件和主题文件,并且找不到很多对屏幕选项的引用。它是在数据库中的某个地方定义的吗?
提前致谢。
答案 0 :(得分:5)
使用default_hidden_meta_boxes过滤器
add_filter( 'default_hidden_meta_boxes', 'my_hidden_meta_boxes', 10, 2 );
function my_hidden_meta_boxes( $hidden, $screen ) {
return array( 'tagsdiv-post_tag', 'tagsdiv', 'postimagediv', 'formatdiv', 'pageparentdiv', ''); // get these from the css class
}
或
add_filter( 'hidden_meta_boxes', 'my_hidden_meta_boxes', 10, 2 );
奖励:要了解其工作原理,请查看核心功能get_hidden_meta_boxes()。这是一个简化版本:
function get_hidden_meta_boxes( $screen ) {
$hidden = get_user_option( "metaboxhidden_{$screen->id}" );
if ( $use_defaults ) {
$hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
}
return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
}
答案 1 :(得分:2)
默认屏幕选项保存在wp_usermeta
meta_key
为metaboxhidden_post
的{{1}}中。
我认为设置默认选项(或隐藏特定框)的最简单方法是使用像adminimize这样的插件。我个人使用advanced custom fields插件执行此任务(还有更多)。
答案 2 :(得分:1)
对Zendka的答案略有修改。我只是想从列表中删除一个项目,否则数组保持不变。
add_filter( 'default_hidden_meta_boxes', 'show_author_metabox', 10, 2 );
function show_author_metabox( $hidden, $screen )
{
$authorkey = array_search( 'authordiv', $hidden );
unset( $hidden[ $authorkey ] );
return $hidden;
}
在我的情况下,我从隐藏列表中删除了'authordiv',将其与您想要从隐藏元框中删除的元数据交换出来。
在取消设置之前,我没有检查元数据是否存在,因为如果没有来自array_search的结果,它不会产生任何PHP通知/错误。