帮助将wp_get_ites更新为Get_Sites并按字母顺序排序

时间:2018-03-19 作者:Tamerax

我正在尝试更新一个网站上的表单,该表单列出了所有可在WP网络网站上注册的网站的下拉列表。它是按ID排序的,但我需要把它改成字母顺序。它还提供了一些代码,允许某些站点在标记为排除的情况下不显示在列表中。我还看到,它使用的代码是自wp 4.6以来就被禁用的,因此它通常需要更新。

问题是,我发现我不知道如何做到这一点,原来的程序员早已不在了,我对这方面的知识有限。

有人能帮我更新这个代码,使其符合当前的标准并按字母顺序排序吗?

            <select id="blog2register" name="blog2register">
        <option disabled="disabled" selected="selected" value="0000"> <?php _e(\' - - - Choose a condo group to register for - - - \',\'msregister\'); ?></option>
        <?php 
        $args = array( \'limit\'      => 10000, );
        $TheBlogs = wp_get_sites($args);
        foreach($TheBlogs as $blog){
            $theBlog = get_blog_details( $blog[\'blogname\'], true );

            if(get_site_option(\'msregister_blog1_id\')!=$blog[\'blogname\'] && get_site_option(\'msregister_exclude_\'.$blog[\'blogname\'])!=\'yes\'){ 
            echo \'<option class="" value="\'.$blog[\'blogname\'].\'">\'.$theBlog->blogname.\'</option>\';
            }

        }
         ?>
        </select>

1 个回复
SO网友:Jacob Peattie

因此,由于wp_get_sites() 就是把它改成get_sites(). 使用时get_sites(), $TheBlogs 将是WP_Site 对象,而不是数组数组。这意味着要获取站点的详细信息,而不是使用get_blog_details() 您可以使用$blog->__get( \'blogname\' ).

另一部分按字母顺序排序,需要对结果数组进行排序,如下所示get_sites() 似乎没有按blogname排序的参数。

// Get blogs with get_sites(), which uses \'number\' instead of \'limit\'. 
$blogs = get_sites( [\'number\' => 1000] );

// Sort blogs alphabetically.
uasort( 
    $blogs, 
    function( $a, $b ) {
        // Compare site blog names alphabetically for sorting purposes.
        return strcmp( $a->__get( \'blogname\' ), $b->__get( \'blogname\' ) );
    }
);

foreach ( $blogs as $blog ) {
    // Store blog name in variable for later use.
    $blogname = $blog->__get( \'blogname\' );

    // Check blog is not excluded.
    if ( 
        get_site_option( \'msregister_blog1_id\' ) != $blogname && 
        get_site_option( \'msregister_exclude_\' . $blogname ) != \'yes\'
    ) { 
        // Output option tag, escaping the blog name as appropriate.
        printf(
            \'<option value="%s">%s</option>\',
            esc_attr( $blogname ),
            esc_html( $blogname )
        );
    }
}

结束