我想按字母顺序列出多站点网络中的所有站点?现在,代码按注册日期列出
<?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>\';
}
?>
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>\';
});