I have 40+ sites showing up in the “My Sites” page with more planned. Unfortunately WordPress doesn’t sort them alphabetically, and that makes it a pain to move from site to site during routine updates and maintenance. I’ve tried adding

asort($blogs);

to wp-admin/my-sites.php, but that doesn’t help either. And regardless, I’d rather do this using a filter in functions.php rather than modifying a core file. Making the issue even more complex is the fact that the list is split into four columns, and while a horizontal alphabetical ordering would be a huge improvement, vertical (by column) would be much, much better.

I’ve been searching for answers for this for a while and coming up empty, so any help would be appreciated. (My PHP is pretty basic, so spelling out the answer would definitely be appreciated.)

2 s
2

Easy one.

<?php
/*
Plugin Name: Sort My-Sites
Description: Sorts the My Sites listing on both the page and in the 3.3 admin bar dropdown
Author: Otto
*/

add_filter('get_blogs_of_user','sort_my_sites');
function sort_my_sites($blogs) {
        $f = create_function('$a,$b','return strcasecmp($a->blogname,$b->blogname);');
        uasort($blogs, $f);
        return $blogs;
}

Edit: If you want a PHP 7 version:

add_filter('get_blogs_of_user', function( $blogs ) {
    uasort( $blogs, function( $a, $b ) { 
        return strcasecmp( $a->blogname, $b->blogname );
    });
    return $blogs;
});

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *