Нужна помощь в сортировке «Мои сайты» по алфавиту


9

У меня более 40 сайтов, показанных на странице «Мои сайты», и запланировано больше. К сожалению, WordPress не сортирует их по алфавиту, и это затрудняет перемещение с сайта на сайт во время рутинных обновлений и обслуживания. Я пытался добавить

asort($blogs);

на wp-admin / my-sites.php, но это тоже не поможет. И независимо от этого, я бы предпочел сделать это, используя фильтр в functions.php, а не изменяя файл ядра. Еще более усложняющим проблему является тот факт, что список разбит на четыре столбца, и хотя горизонтальное алфавитное упорядочение будет огромным улучшением, вертикальное (по столбцам) будет намного лучше.

Я долго искал ответы на эти вопросы и был пуст, поэтому любая помощь будет принята с благодарностью. (Мой PHP довольно простой, так что объяснение ответа определенно приветствуется.)


Это не рекомендуется изменить основной кроме WP-config.php WordPress файлов.
Понт Абрахамссон

@PontusAbrahamsson, это то, что он сказал во втором абзаце.
Synetech

Ответы:


12

Легко.

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

1
Вау, это именно то решение, на которое я надеялся: чистое и красивое, не меняющее основные файлы. Работает отлично. Определенно не то, что я мог бы придумать, хотя. Большое спасибо, Отто!
Сэм

1
обновление для PHP 7.2: function sort_my_sites ($ blogs) {$ f = function ($ a, $ b) {return strcasecmp ($ a-> blogname, $ b-> blogname); }; uasort ($ блоги, $ f); вернуть $ блоги; } add_filter ('get_blogs_of_user', 'sort_my_sites');
Крис Чалмерс

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.