如何在侧栏上定位自定义仪表板小部件

时间:2010-11-30 作者:Dan Smart

My Question:
是否可以在右侧列中添加自定义仪表板小部件,而不是仅在左侧?

我使用wp_add_dashboard_plugin( $widget_id, $widget_name, $callback, $control_callback = null ) 添加插件代码,但它没有任何选项允许您设置位置。

有什么建议吗?

My Comments:

似乎只有当仪表板插件的名称位于$side_widgets 数组,其内容为:array(\'dashboard_quick_press\', \'dashboard_recent_drafts\', \'dashboard_primary\', \'dashboard_secondary\');

我的想法是我必须直接修改$wp_meta_boxes[\'dashboard\'] - 但我不确定这会带来什么后果。

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

你是对的,事实并非如此wp_add_dashboard_widget 作用所以只要使用泛型add_meta_box 并指示仪表板和位置:

add_action( \'wp_dashboard_setup\', \'my_dashboard_setup_function\' );
function my_dashboard_setup_function() {
    add_meta_box( \'my_dashboard_widget\', \'My Widget Name\', \'my_dashboard_widget_function\', \'dashboard\', \'side\', \'high\' );
}
function my_dashboard_widget_function() {
    // widget content goes here
}

SO网友:Tim Yao

当前有isn\'t 一种简单的API方法pre-sort 默认窗口小部件,意味着您的新窗口小部件将always be at the bottom 列表的。

下面是一个挂钩函数示例,它将尝试将您的小部件放在默认小部件之前。它通过手动更改元盒的内部数组(其中仪表板小部件是一种类型)并将您的小部件放在列表的顶部以使其首先显示来实现。

function example_add_dashboard_widgets() {
    wp_add_dashboard_widget( \'example_dashboard_widget\', 
        \'Example Dashboard Widget\', 
        \'example_dashboard_widget_function\' );

    // Globalize the metaboxes array, this holds all the widgets for wp-admin    
    global $wp_meta_boxes;

    // Get the regular dashboard widgets array 
    // (which has our new widget already but at the end)    
    $normal_dashboard = $wp_meta_boxes[\'dashboard\'][\'normal\'][\'core\'];

    // Backup and delete our new dashbaord widget from the end of the array    
    $example_widget_backup = array( \'example_dashboard_widget\' => 
        $normal_dashboard[\'example_dashboard_widget\'] );
    unset( $normal_dashboard[\'example_dashboard_widget\'] );

    // Merge the two arrays together so our widget is at the beginning   
    $sorted_dashboard = array_merge( $example_widget_backup, $normal_dashboard );

    // Save the sorted array back into the original metaboxes     
    $wp_meta_boxes[\'dashboard\'][\'normal\'][\'core\'] = $sorted_dashboard;
} 
不幸的是,这只适用于从未重新订购过小部件的用户。一旦用户这样做了,他们现有的首选项将覆盖此选项,他们将不得不将您的小部件移动到顶部,使其保持在那里。

上述内容引自Codex:Forcing your widget to the top

结束

相关推荐

Why use widgets?

我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?