Multisite: Blog-IDs im Menü „Meine Websites“ anzeigen
Veröffentlicht: – Kommentar hinterlassen Letzte Aktualisierung:
Jeder Blog bzw. jede Site in einer Multisite hat eine eindeutige ID. Diese im Menü anzuzeigen, kann insbesondere während der Entwicklung hilfreich sein. Diese IDs sind andernfalls nur ersichtlich, wenn man sich die Links zum Bearbeiten einzelner Sites inter Meine Websites > Netzwerkverwaltung > Websites ansieht. Ziemlich umständlich, wie ich finde.
Da ich diese IDs aber immer wieder benötige, beispielsweise um dadurch die richtigen Tabellen in der Datenbank zu finden, habe ich mir einmal angesehen, wie man diese irgendwo sauber angezeigt bekommt. Als Ziel habe ich mir letztendlich das Menü „Meine Websites“ ausgesucht, da dort bereits alle Sites einer Multisite gelistet sind, auf denen man als Benutzer hinterlegt ist.
Da man die Liste „Meine Websites“ mit dem Hook admin_bar_menu
verändern kann und die Liste der Blogs/Sites in der Instanz WP_Admin_Bar
liegen, ist der Code dafür recht übersichtlich:
<?php
/**
* Display blog IDs in network menu.
*
* @param \WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance
*/
function km_blog_ids_in_admin_bar( WP_Admin_Bar $wp_admin_bar ) {
foreach ( $wp_admin_bar->user->blogs as &$blog ) {
$blog->blogname = sprintf(
'(%d) %s',
$blog->userblog_id,
$blog->blogname
);
}
}
add_action( 'admin_bar_menu', 'km_blog_ids_in_admin_bar' );
Code-Sprache: PHP (php)
Der Blogname wird dabei durch das Format (%d) %s
überschrieben, wobei %d
mit der ID des Blogs/der Site ersetzt wird und %s
mit dem Namen des Blogs/der Site.
Diesen Code habe ich dann als Must-Use-Plugin unter /wp-content/mu-plugins
gelegt, sodass er direkt in der gesamten Multisite geladen wird. Natürlich kann man daraus auch ein normales Plugin basteln, das halte ich hier aber nicht für notwendig.
Ein Stolperstein hier war noch, dass ich die Ersetzung möglichst spät durchführen wollte – wer weiß, welches Plugin dort noch eingreift. Eine Priorität höher als 20 ist hier aber generell nicht möglich, da die Reihenfolge des Menüs ebenfalls über die Priorität gesteuert wird und die Liste der eigenen Websites ebenfalls die Priorität 20 besitzt. Zwar kann man die Werte auch später verändern, aber da die Liste dann bereits ausgespielt wurde, hat die Veränderung hier keinen Effekt mehr.
Das Endergebnis sieht dann in meinem Fall beispielsweise so aus: