如何获取Wordpress Multisite网络中所有网站的列表?

时间:2015-12-07 20:56:44

标签: wordpress

我需要一些php请求来获取wp-network中所有站点的列表。有可能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用

 <?php wp_get_sites( $args ); ?> 

示例,对于下面的v 3.0

<?php
$blog_list = get_blog_list( 0, 'all' );
foreach ($blog_list AS $blog) {
    echo 'Blog '.$blog['blog_id'].': '.$blog['domain'].$blog['path'].'<br />';
}
?>

答案 1 :(得分:1)

从WP 4.6开始,有一个新的function to query sites get_sites($query_arg)与用于检索帖子的熟悉的get_posts($query_args)类似,

$blogs_ids=get_sites();
foreach( $blog_ids as $b ){
    $b->blog_id 
    //Do stuff
}  

答案 2 :(得分:0)

当您希望与所有多站点版本兼容时,使用WordPress功能会有些问题:

  • get_blog_list 不仅已弃用,而且不会返回未标记为公开的站点!
  • 相比之下,
  • wp_get_sites 仅适用于WP 4.6.0或更高版本

我更喜欢使用以下代码,该代码与所有WordPress版本(当然是3.0.0版本)兼容,并返回安装的所有站点(甚至是归档站点,已停用站点等):

global $wpdb;  
$blogs = $wpdb->get_results( "SELECT blog_id, domain, path FROM $wpdb->blogs ORDER BY blog_id" );

如果要过滤结果,而不显示已归档的,已停用的结果和垃圾邮件站点,则必须在查询中指出如下:

global $wpdb;
$blogs = $wpdb->get_results( "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE archived = '0' AND deleted = '0' AND spam = '0' ORDER BY blog_id" );

参考: get_blog_list