需要帮助按字母顺序对“我的网站”进行排序


9

我在“我的网站”页面上显示了40多个网站,并且还有更多计划。不幸的是,WordPress不能按字母顺序对它们进行排序,这使得在例行更新和维护期间从一个站点移到另一个站点很麻烦。我尝试添加

asort($blogs);

到wp-admin / my-sites.php,但这也无济于事。而且无论如何,我宁愿使用functions.php中的过滤器来执行此操作,而不是修改核心文件。使问题变得更加复杂的事实是,该列表分为四列,而水平按字母顺序排序将是一个巨大的改进,而垂直(按列)则要好得多。

我一直在寻找答案的方法一段时间,然后空着出来,所以我们将不胜感激。(我的PHP非常基础,因此,明确给出答案肯定会有所帮助。)


这是建议超过WP-config.php的其他变化的核心WordPress的文件。
Pontus Abrahamsson

@PontusAbrahamsson,这就是他在第二段中所说的。
Synetech

Answers:


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

编辑:如果您想要一个PHP 7版本:

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

1
哇,这正是我所希望的解决方案类型:简洁美观,并且不会修改核心文件。完美运作。绝对不是我想出的东西。非常感谢奥托!
山姆

1
PHP 7.2更新:function sort_my_sites($ blogs){$ f = function($ a,$ b){return strcasecmp($ a-> blogname,$ b-> blogname); }; uasort($ blogs,$ f); 返回$ blogs;} add_filter('get_blogs_of_user','sort_my_sites');
克里斯·查默斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.