Admin in Autorenliste nicht anzeigen

  • Hi,

    was muss ich am Code anpassen um den Admin in der Liste nicht anzeigen zu lassen.
    http://radiokorneuburg.purespace.eu/team/

    ich verwende diesen PHP Code, der in der functions.php liegt:

    PHP
    function contributors() {global $wpdb;
    $authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users ORDER BY display_name");
    foreach($authors as $author) {echo "<li>";echo "<a href=\"".get_bloginfo('url')."/?author=";echo $author->ID;echo "\">";echo userphoto($author->ID);echo "</a>";echo '<div>';echo "<a href=\"".get_bloginfo('url')."/?author=";echo $author->ID;echo "\">";the_author_meta('display_name', $author->ID);echo "</a>";echo "</div>";echo "</li>";}
    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • habe folgendes bearbeitet und nun passts

    $authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users WHERE display_name <> 'admin' ORDER BY display_name");

  • Schön, dass Du es bereits hinbekommen hast.

    Der Vollständigkeit halber möchte ich darauf hinweisen, dass Du dafür eigentlich keinen eigenen SELECT zu basteln brauchst. Es gibt dafür eine fertige WP Funktion: get_users() - http://codex.wordpress.org/Function_Reference/get_users. Mit dem Parameter exclude kannst Du User über die User-ID ausschließen.

    Die Funktion liefert Dir ein Array, in dem auch der display_name bereits enthalten ist, sodass Du Dir auch noch den Aufruf von the_author_meta sparen kannst.

    Außerdem gibt es mit get_author_posts_url() eine Funktion, die Dir den Link zur Seite des Autors ausgibt, sodass Du auch diesen nicht selbst generiern musst.

    Nur so als Hinweis - Du hast ja eine Lösung gefunden.

    Peter

  • [size=12][COLOR=#000000][FONT=Calibri]Ich möchte das Thema noch mal aufgreifen, weil ich trotz des Codex noch nicht ganz dahinter gestiegen bin. PHP kann ich mir einfach nicht verinnerlichen. ;)[/FONT][/COLOR][/SIZE]

    [size=12][COLOR=#000000][FONT=Calibri]Ich möchte mein Blog auf ein neues Design umstellen, welches eine Archiv Seite mit der Auflistung der Autoren anzeigen lassen kann. Leider wird dort eben auch der Admin angezeigt. Aus Sicherheitsgründen hat bei mir der Admin eben nicht den User-Namen admin und daher muss ich das anders filtern.[/FONT][/COLOR][/SIZE]

    [FONT=Calibri][COLOR=#000000]Das ist der Originalcode der entsprechenden php Seite:

    PHP
    <?php
                                                   $blogusers= get_users();
                                                   //Array of WP_User objects.
                                                   foreach( $blogusers as $user ) {
                                                                   echo'<li><a href=' . get_author_posts_url( $user->ID ) .  '><spanclass="author-avatar">'  .get_avatar( $user->user_email, '50' ) . '</span>';
                                                                   echo'<span class="author-name">' . esc_html( $user->display_name ) .'</span></a></li>';
                                                   }
                                                    ?>

    Das wäre meine Änderung mit dem exclude Befehl - sicherlich falsch...:

    PHP
    <?php
                                                   $blogusers= get_users( array( 'exclude' => array( 'id=1' ) ) );
                                                   //Array of WP_User objects.
                                                   foreach( $blogusers as $user ) {
                                                                   echo'<li><a href=' . get_author_posts_url( $user->ID ) .  '><spanclass="author-avatar">'  .get_avatar( $user->user_email, '50' ) . '</span>';
                                                                   echo'<span class="author-name">' . esc_html( $user->display_name ) .'</span></a></li>';
                                                   }
                                                    ?>

    Und da der Admin kein Autor ist, dachte ich mir, ginge es vielleicht auch so?

    PHP
    <?php
                                                   $blogusers= get_users( 'role=author' );
                                                   //Array of WP_User objects.
                                                   foreach( $blogusers as $user ) {
                                                                   echo'<li><a href=' . get_author_posts_url( $user->ID ) .  '><span class="author-avatar">'  . get_avatar( $user->user_email, '50' ) .'</span>';
                                                                   echo'<span class="author-name">' . esc_html( $user->display_name ) .'</span></a></li>';
                                                   }
                                                    ?>

    Für einen Hinweis wäre ich sehr dankbar. :)[/COLOR][/FONT]

  • Das schaut gar nicht schlecht aus.

    Mit Exclude der ID müsste der Befehl so aussehen:
    get_users(array('exclude' => array(1)));

    Der zweite Code sollte auf den ersten Blick eigentlich funktionieren. Alternativ sollte auch möglich sein:
    get_users(array('role'=>'author'));

    Eine andere Möglichkeit wäre noch, innerhalb der foreach Schleife mit count_user_posts($user->ID) zu überprüfen, ob es Posts von dem entsprechenden User gibt und nur diese anzuzeigen. Das wäre evtl. die eleganteste Lösung - außer Du möchtest auch User ohne Posts sehen.

    Peter

  • Ich danke Dir. Werde ich heute gleich mal ausprobieren. :) Wir haben drei Autoren und einen Admin, der nix postet. Daher muss ich wirklich nur den ausklammern.

  • Merkwürdig. Ich kann meine eigenen Beiträge nicht bearbeiten. Der Doppelpost ist also nicht beabsichtigt. Wollte mich noch mal bedanken. Mit get_users(array('role'=>'author')); hat es perfekt funktioniert. :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!