metaboxhidden_dashboard
第一个是一个数组,其中键是:“正常”、“侧边”、“列3”和“列4”。
自WP 3.8以来,仪表板默认有4列1,每个键都指向一列,第一列称为“正常”,第二列称为“侧边”,我想是为了向后兼容。
每个键都包含该列中显示的小部件ID的逗号分隔字符串,所以若要强制小部件成为第一列中唯一的小部件,必须\'normal\'
列只包含您的小部件id,并将所有其他小部件移动到另一列,如下所示:
function order_dashboard_widgets() {
$uid = get_current_user_id();
// hide welcome panel
update_user_meta( $uid, \'show_welcome_panel\', \'0\' );
// add your widget
wp_add_dashboard_widget(
\'unsocial_widget\', \'Antisocial Dashboard Widget\',
function() {
echo \'<h1>I like to be the alone!</h1>\';
}
);
$order = (array) get_user_meta( $uid, \'meta-box-order_dashboard\', true );
if ( ! isset( $order[\'normal\'] ) ) $order[\'normal\'] = \'\';
if ( $order[\'normal\'] !== \'unsocial_widget\' ) {
$normal = explode( \',\', $order[\'normal\'] );
$unsocial_key = array_search( \'unsocial_widget\', $normal, true );
if ( $unsocial_key !== false ) {
unset( $normal[$unsocial_key] );
}
$order[\'side\'] = implode( \',\', $normal ) . \',\' . $order[\'side\'];
$order[\'normal\'] = \'unsocial_widget\'; // yours is the only widget in 1st column
update_user_meta( $uid, \'meta-box-order_dashboard\', $order );
}
}
add_action( \'wp_dashboard_setup\', \'order_dashboard_widgets\' );
这样,您的小部件将始终是第一列中的第一个也是唯一一个小部件。现在,为了回答您的问题,是的,也可以使用\'metaboxhidden_dashboard\'
用户元:它包含一个必须隐藏的小部件ID数组,因此您可以用所有仪表板小部件填充它。
function remove_dashboard_widgets() {
// add your widget
wp_add_dashboard_widget(
\'unsocial_widget\', \'Antisocial Dashboard Widget\',
function() {
echo \'<h1>I like to be the alone!</h1>\';
}
);
$uid = get_current_user_id();
// hide welcome panel
update_user_meta( $uid, \'show_welcome_panel\', \'0\' );
// get the current hidden metaboxes
$hidden = get_user_meta( $uid, \'metaboxhidden_dashboard\' );
// the metaboxes to be hidden
$to_hide = array(
\'dashboard_right_now\',
\'dashboard_activity\',
\'dashboard_quick_press\',
\'dashboard_primary\'
);
// if not already hidden, hide
if ( $hidden !== $to_hide ) {
update_user_meta( $uid, \'metaboxhidden_dashboard\', $to_hide );
}
}
add_action( \'wp_dashboard_setup\', \'remove_dashboard_widgets\' );
然而,通过这种方式,用户将无法再隐藏、显示或移动小部件,因为在每次登录时,它们都会再次被隐藏(但您的小部件除外……),这就是为什么我更喜欢前面的解决方案。。。也许,如果您想隐藏所有其他小部件,您只能在用户第一次访问仪表板时这样做,并且在所有子任务访问中,只需使用前面的函数来订购小部件。(您可以在first vist上保存用户元,以了解当前用户是否已经访问了仪表板)。
Note: 当然,任何其他插件都可以使用相同的代码,因此您永远不能绝对肯定您的插件是第一个小部件。。。毕竟这个答案现在已经公开了;)
1 使用几行代码可以have again possibility to use a custom number of columns 但即使在这种情况下,数组也保持不变:如果允许的列少于4列,则不会删除其他键