it-swarm.com.de

Hilfe beim Aktualisieren von wp_get_sites auf get_sites und Sortieren nach alphabetischer Reihenfolge

Ich versuche, ein Formular auf einer Website zu aktualisieren, auf der eine Dropdown-Liste aller Websites zur Registrierung auf einer WP -Netzwerksite verfügbar ist. Es ordnet es nach ID, aber ich muss es in alphabetisch ändern. Außerdem gibt es ein bisschen Code, mit dem einige Websites nicht in der Liste angezeigt werden können, wenn sie als ausgeschlossen markiert sind. Ich sehe auch, dass es Code verwendet, der seit wp 4.6 herabgesetzt ist, so dass es im Allgemeinen aktualisiert werden muss.

Das Problem ist, dass ich sehe, dass ich nicht weiß, wie ich das machen soll, und dass der ursprüngliche Codierer schon lange nicht mehr existiert und mein Wissen darüber begrenzt ist.

Kann mir jemand helfen, diesen Code auf den neuesten Stand zu bringen und alphabetisch zu sortieren?

            <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
Tamerax

Die wichtigsten Änderungen, die aufgrund der Ablehnung von wp_get_sites() aktualisiert werden müssen, sind Änderungen an get_sites(). Bei Verwendung von get_sites() ist $TheBlogs ein Array von WP_Site -Objekten und kein Array von Arrays. Dies bedeutet, dass Sie get_blog_details() verwenden können, um die Details der Site abzurufen, anstatt $blog->__get( 'blogname' ) zu verwenden.

Der andere Teil, alphabetisch sortiert, erfordert das Sortieren des resultierenden Arrays, da get_sites() anscheinend kein Argument für die Sortierung nach Namen hat.

// 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 )
        );
    }
}
1
Jacob Peattie