Potrzebujesz pomocy w sortowaniu „Moich witryn” alfabetycznie

9

Mam ponad 40 witryn wyświetlanych na stronie „Moje witryny”, a więcej jest zaplanowanych. Niestety WordPress nie sortuje ich alfabetycznie, co utrudnia przechodzenie między witrynami podczas rutynowych aktualizacji i konserwacji. Próbowałem dodać

asort($blogs);

do wp-admin / my-sites.php, ale to też nie pomaga. I niezależnie od tego wolę to zrobić, używając filtru w functions.php niż modyfikując plik rdzenia. Sprawa jest jeszcze bardziej złożona, ponieważ lista jest podzielona na cztery kolumny, a podczas gdy pozioma kolejność alfabetyczna byłaby ogromnym ulepszeniem, pionowa (według kolumn) byłaby znacznie, znacznie lepsza.

Od jakiegoś czasu szukam odpowiedzi na to pytanie i jestem pusty, więc każda pomoc byłaby mile widziana. (Mój PHP jest dość prosty, więc określenie odpowiedzi z pewnością byłoby mile widziane.)

Sam
źródło
To jest nie zaleca się zmiany podstawowych plików WordPress innych niż wp-config.php.
Pontus Abrahamsson
@PontusAbrahamsson, tak powiedział w drugim akapicie.
Synetech,

Odpowiedzi:

12

Łatwe.

<?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;
}

Edycja: Jeśli chcesz wersję PHP 7:

add_filter('get_blogs_of_user', function( $blogs ) {
    uasort( $blogs, function( $a, $b ) { 
        return strcasecmp( $a->blogname, $b->blogname );
    });
    return $blogs;
});
Otto
źródło
1
Wow, to DOKŁADNIE taki rodzaj rozwiązania, na jakie liczyłem: czysty i piękny, i nie modyfikuje podstawowych plików. Działa świetnie. Zdecydowanie nie jest to jednak coś, co mógłbym wymyślić. Dzięki bardzo Otto!
Sam
1
aktualizacja dla PHP 7.2: funkcja sort_my_sites ($ blogs) {$ f = funkcja ($ a, $ b) {return strcasecmp ($ a-> nazwa blogu, $ b-> nazwa blogu); }; uasort ($ blogi, $ f); zwracaj $ blogi; } add_filter ('get_blogs_of_user', 'sort_my_sites');
Chris Chalmers
3

Ta wtyczka wykonuje również zadanie:

Zmień kolejność moich witryn

Dla WordPress Multisite. Zmienia kolejność alfabetycznie menu rozwijanego Moje witryny na pasku administracyjnym. Utrzymuje główny blog na górze.

Hooman Askari
źródło