Hui, das sieht aber wild aus. Scheint schon älter zu sein, oder? Die Funktion holt die Kategorien per wp_dropdown_cats und filtert dann alle HTML-Elemente raus, um die IDs und Namen zu bekommen... das geht viel eleganter mit get_categories, aber das nur am Rande.
Bzgl. der Autoranzeige könnte es daran liegen, dass mit offset gearbeitet, und get_the_author() benutzt wird, was eigentlich nur im Loop genutzt werden sollte.
Versuch mal folgendes beim Teil nach:
$myposts = get_posts("numberposts=4&category=$cat_number&offset=1");
Folgendes:
$postauthor = get_the_author();
ersetzen mit:
$userinfo = get_userdata( $post->post_author );
$postauthor = $userinfo->user_login