Ordnen Sie Dashboard-Widgets neu an

Ich habe kürzlich versucht, die DashboardWidgets neu zu ordnen, indem ich ein Plugin geschrieben habe. Ich habe das geschafft:

Bildbeschreibung hier eingeben

mit dem folgenden Code:

<?php /* * Plugin Name: Custom Dashboard * Description: Custom dashboard for Avare sites. * Author: Avare * Version: 1.0 */ function sort_dashboard_widgets() { $left_column_widgets[] = 'dashboard_right_now'; $left_column_widgets[] = 'dashboard_recent_comments'; $left_column_widgets[] = 'dashboard_incoming_links'; $right_column_widgets[] = 'dashboard_quick_press'; $right_column_widgets[] = 'dashboard_recent_drafts'; $right_column_widgets[] = 'dashboard_primary'; $right_column_widgets[] = 'dashboard_secundary'; // Global the $wp_meta_boxes variable (this will allow us to alter the array) global $wp_meta_boxes; // We then unset that part of the array unset($wp_meta_boxes['dashboard']['normal']['core']); unset($wp_meta_boxes['dashboard']['side']['core']); // Then we make a backup of the widget areas $left_dashboard = $wp_meta_boxes['dashboard']['normal']['core']; $right_dashboard = $wp_meta_boxes['dashboard']['side']['core']; // Then we merge them in some sort of way (is this necessary?) $sorted_left_dashboard = array_merge((array)$left_column_widgets, (array)$left_dashboard); $sorted_right_dashboard = array_merge((array)$right_column_widgets, (array)$right_dashboard); // Now we add the sorted widgets back in $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_left_dashboard; $wp_meta_boxes['dashboard']['side']['core'] = $sorted_right_dashboard; } add_filter('wp_dashboard_setup', 'sort_dashboard_widgets'); 

Wie Sie auf dem Screenshot sehen können, sieht es so aus, als ob das Plugin nur den ersten Buchstaben von $ left_column_widgets und $ right_column_widgets betrachtet , was die Fehler verursacht (weil ‘d’ kein gültiger Widget Slug ist). Gibt es eine Möglichkeit, dieses Problem zu lösen?

Prost

Solutions Collecting From Web of "Ordnen Sie Dashboard-Widgets neu an"

Dinge aufräumen

Zuerst gibt es ein kleines Missverständnis. wp_dashboard_setup ist eine Aktion und kein Filter. Wenn es ein Filter wäre, hätte es ein oder mehrere Argumente und müsste das erste zurückgeben.

Anleitung # 1

Ein Beispiel für diese Aktion finden Sie im folgenden mu-plugin, das ich verwende:

 < ?php /** * Plugin Name: Remove Dashboard Widgets * Description: Removes all Dashboard Widgets */ function dashboard_widgets() { remove_meta_box( 'dashboard_browser_nag', 'dashboard', 'normal' ); remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' ); remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' ); remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' ); remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' ); remove_meta_box( 'dashboard_primary', 'dashboard', 'side' ); remove_meta_box( 'dashboard_secondary', 'dashboard', 'side' ); } add_action( 'wp_dashboard_setup', 'dashboard_widgets' ); 

Nachdem Sie diese Widgets entfernt haben, können Sie sie mit wieder hinzufügen

 add_dashboard_widget( $widget_id, $widget_name, $callback ); 

Weitere Informationen finden Sie im Codex und in der Dashboard-Widget-API . Um die /wp-admin/includes/dashboard.php zu sehen, schauen Sie in /wp-admin/includes/dashboard.php -> wp_setup_dashboard() . Dann füge sie einfach wieder hinzu, so wie du sie brauchst.

Anleitung # 2

Es gibt auch verschiedene andere Optionen, die Sie haben: Filter.

Vorher sollten wir jedoch klären, auf welches Dashboard Sie ausgerichtet sind. All diese werden in einigen Fällen (Plugins, etc.) verschiedene Dashboards und verschiedene Filter haben

  • Netzwerkadministratoren (aka Super-Admins) -> wp_network_dashboard_widgets
  • Site-Administrator -> wp_user_dashboard_widgets
  • Benutzer -> wp_dashboard_widgets

All diese Filter filtern das Array $dashboard_widgets (und sollten es zurückgeben).

Erweitern der Standardwerte

Wenn Sie die Standard-Widgets erweitern möchten, sollten Sie den Hook 'do_meta_boxes' , der drei Argumente hat (Screen-ID, Position wie Seite, Normal usw. und ein leeres drittes Argument).

Nachteile und Grenzen

Sie müssen akzeptieren, dass Benutzer diese Widgets neu anordnen (oder sogar deaktivieren können). Das sollte so sein und so gehalten werden.

Whoop, ich habe es herausgefunden. 🙂 Obwohl ich es herausgefunden habe, bevor Kaiser meine Frage beantwortet hat, möchte ich ihm immer noch für seine klare und ehrliche Antwort danken. Im Folgenden finden Sie den Code, den ich geschrieben habe, um die Dashboard-Widgets neu anzuordnen.

 < ?php /** * Plugin Name: Custom Dashboard * Description: Custom dashboard for Avare sites. * Author: Avare * Version: 1.0 */ function sort_dashboard_widgets() { // Global the $wp_meta_boxes variable (this will allow us to alter the array) global $wp_meta_boxes; // Then unset everything in the array unset($wp_meta_boxes['dashboard']['normal']['core']); unset($wp_meta_boxes['dashboard']['side']['core']); // Add widgets to left column add_meta_box('dashboard_right_now', __('Right Now'), 'wp_dashboard_right_now', 'dashboard', 'normal', 'core'); add_meta_box('dashboard_recent_comments', __('Recent Comments'), 'wp_dashboard_recent_comments', 'dashboard', 'normal', 'core'); // Add widgets to right column add_meta_box('dashboard_quick_press', __('QuickPress'), 'wp_dashboard_quick_press', 'dashboard', 'side', 'core'); add_meta_box('dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts', 'dashboard', 'side', 'core'); } add_action('wp_dashboard_setup', 'sort_dashboard_widgets'); 

Beachten Sie, dass dieser Code nicht alle verfügbaren Dashboard-Widgets verwendet.