WP4.7是否更改了多站点中站点的_ARCHIVED()?

时间:2016-12-14 作者:geodude

我有一段代码显示了我的多站点中的站点列表,我想排除已存档的站点:

$mySites = ( wp_get_sites( $args ) );

foreach ( $mySites as $blog ) {

    if ( ! ( is_archived($blog) ) ) {
         switch_to_blog( $blog[\'blog_id\'] );
         printf( \'%s<a href="%s">%s</a></li>\' . "\\r\\n", $TagLi, home_url(), get_option( \'blogname\' ) );  

    restore_current_blog();
    }
}
在更新到4.7之前,这是正常工作的。现在,它不再排除存档的站点,而是打印出一个完整的列表。

具有功能is_archived() 是否更改?或者问题是什么?

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

您能在某处尝试以下代码并发布输出吗?

$mySites = wp_get_sites($args);
foreach ($mySites as $blog){
    print_r(get_blog_status($blog[\'blog_id\'], \'archived\'));
}
如果这样行的话,我怀疑背后的代码is_archived() 用于理解博客对象,但function is supposed to recieve only the blog ID, 不是整个对象。

您的代码应如下所示:

$mySites = wp_get_sites($args);
foreach ($mySites as $blog){
    if (!is_archived($blog[\'blog_id\'])){
        switch_to_blog( $blog[\'blog_id\'] );
        printf( \'%s<a href="%s">%s</a></li>\' . "\\r\\n", $TagLi, home_url(), get_option( \'blogname\' ) );  

        restore_current_blog();
    }
}

SO网友:birgire

请注意get_sites() 与不推荐的输出不同wp_get_sites() 功能在WordPress 4.7+。

这个get_sites() 函数返回WP_Site 对象,但wp_get_sites() 返回数组的数组。

所以如果你使用get_sites(), 您需要使用以下内容调整代码段:

is_archived( $blog->blog_id )
以及

switch_to_blog( $blog->blog_id );
而不是使用$blog[\'blog_id\'].

相关推荐

如果WP_QUERY中有数据,如何签入Functions.php?

我在主页上有两个不同的WP查询。我需要检查函数中的$home\\u查询条件。php然后,如果$home\\u query返回null,我想做些什么。我尝试了pre\\u get\\u posts操作,但我无法捕获$home\\u查询数据,而且它运行了两次,因为页面上有两个WP\\u查询。使用If$home\\u query返回null的分页方式,我想将页面重定向到404页面并获取404响应的代码。例如https://example.com/page/200/ 页码是200,但在页面中没有200页码,我想重