List all sites in multisite

时间:2014-05-22 作者:Ruriko

我想按字母顺序列出多站点网络中的所有站点?现在,代码按注册日期列出

<?php
// Query for getting blogs
            $blogs = $wpdb->get_results( $wpdb->prepare("SELECT blog_id, domain, path FROM $wpdb->blogs WHERE site_id = %d AND public = \'1\' AND archived = \'0\' AND mature = \'0\' AND spam = \'0\' AND deleted = \'0\' ORDER BY registered DESC", $wpdb->siteid), ARRAY_A );

            // put it in array  
            foreach ( (array) $blogs as $details ) {$blog_list[ $details[\'blog_id\'] ] = $details;}
            unset( $blogs );
            $blogs = $blog_list;

            // if is valid array
            if (is_array( $blogs ) ){
                    echo \'<ul>\';
                    $array= array();
                    // reorder
                    $array= array_slice( $blogs, 0, count( $blogs ) );
                    for($i=0;$i<count($array);$i++){
                    // get data for each id
                    $blog = get_blog_details( $array[$i][\'blog_id\'] );
                    // print it
                    echo \'<li><a href="\'.$blog->siteurl.\'">\'.$blog->blogname.\'</a></li>\';
                    }
                    echo \'</ul>\';
            }
            ?>

2 个回复
最合适的回答,由SO网友:birgire 整理而成

您可以尝试替换:

ORDER BY registered DESC
使用:

ORDER BY domain ASC, path ASC
按字母顺序获取网站。

SO网友:fuxia

如果要按站点名称而不是路径对站点进行排序,请使用strcasecmp() 在的回调中uasort().

实例

is_admin() || add_action( \'shutdown\', function() {

    $sites = wp_get_sites();

    foreach ( $sites as $i => $site ) {

        switch_to_blog( $site[ \'blog_id\' ] );
        $sites[ $i ][ \'name\' ] = get_bloginfo();
        restore_current_blog();
    }

    uasort( $sites, function( $site_a, $site_b ) {
        return strcasecmp( $site_a[ \'name\' ], $site_b[ \'name\' ] );
    });

    print \'<pre>\' . print_r( $sites, 1 ) . \'</pre>\';
});

结束

相关推荐

在wp_list_ages菜单的标题下列出所有帖子

我目前使用wordpress的默认页面导航(wp\\u list\\u pages),我已将主页设置为“主页”,将博客设置为“事件”,但我想在“事件”子项下列出最近的10篇文章。我试图使用以下代码对其进行黑客攻击,但它到处都是内容,并删除了标记:add_filter(\'wp_list_pages\', \'add_forum_link\'); function add_forum_link($output) { $output .= \'<li><a h