Benutzerdefinierte Reihenfolge für „Meine Websites“ Menü in Multisite-Network

play 1317103 1920
Bild von Andreas Almstedt auf Pixabay

Inspiriert vom Plugin Code in Reorder My Sites. In der Funktion order() wird die Reihenfolge der Blog-IDs benutzerdefiniert. Im Anwendungsfall konnte ich das so machen, weil zu den sechs bestehenden Sites keine neuen mehr geplant waren.

Nun könnte man für das Einstellen der Reihenfolge noch eine Netzwork-Einstellungsseite anlegen, um die Blogs per Drag & Drop anzuordnen (was in einem wachsenden Netzwerk sinnvoll wäre, damit keines aus der Reihe fällt).

<?php 
/*
 * Plugin Name: FLXO Reorder My Sites
 * Description: Custom order for sites
 * Network: true
 */

class FLXO_Reorder_Sites {

    function __construct() {
        if( is_multisite() ) {
            add_action( 'admin_bar_menu' , array( $this , 'admin_bar_menu' ) );
        }
    }

    function order() {
        return array(1,3,5,4,6,2);
    }
    
    function admin_bar_menu() {
        global $wp_admin_bar;

        $sites = $wp_admin_bar->user->blogs;

        foreach( $sites as $site_id=>$site ) {
            $blog_names[$site_id] = strtoupper( $site->blogname );
        }

        $wp_admin_bar->user->blogs = array();

        /**
         * custom sort by set IDs
         */

        foreach ( $this->order() as $id ) {
            if( isset( $sites[$id] ) ) {
                unset( $blog_names[$id] );
                $wp_admin_bar->user->blogs{$id} = $sites[$id];
            }
        }

        /** 
         * missing site ids in function?
         * sort them alphabetically after custom ordered 
         */
        if ( count( $blog_names ) ) {

        asort( $blog_names );

            foreach( $blog_names as $id => $name ) {
                $wp_admin_bar->user->blogs{$id} = $sites[$id];
            }
        }

    }
}

$reorder_my_sites = new FLXO_Reorder_Sites();

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable