Verbessern eines Stackoverflow “inspirierten” Badge-Systems zur Anzeige von Badges in der Autorenseite

Ich habe ein lange verlassenes Plugin-Projekt modifiziert, das ein Stackoverflow inspiriertes Ausweissystem für WordPress bietet. Ich habe einige seiner Code aktualisiert, so dass es mit der neuen WordPress-Version funktioniert.

Bitte sehen Sie sich den Plugin-Code hier an: http://pastebin.com/kCWWLPL2

Das Problem besteht darin, dass der ursprüngliche Code keine Möglichkeit bot, die dem Benutzer zugewiesenen Abzeichen zu wiederholen. Derzeit gibt es eine Möglichkeit, die Abzeichen anzuzeigen: Diese function listet jedes einzelne Abzeichen im System auf.

Ich möchte den Code so ändern, dass durch Hinzufügen einer function zur Seite “author.php” von WordPress die vom Nutzer vergebenen Abzeichen aufgelistet werden. Meine PHP Kenntnisse sind jedoch sehr begrenzt und ich habe eine Wand getroffen.

Mir wurde gesagt, dass das funktionieren könnte:

  $user_id)); } ?> 

Aber alles, was es getan hat, war, alle Abzeichen aufzulisten und nicht nur die ausgezeichneten für den Benutzer. Vielleicht fehlt etwas im obigen Code? Ich bin mir sicher, dass es einen Weg geben muss, dies zu erreichen. Weißt du wie?

Update: Wenn wir in den Originalcode schauen, können wir sehen, dass bereits ein Filter vorhanden ist:

 function rhb_get_badges( $filter = '' ) { global $wpdb; if ( empty($filter ) ) { $filter = array(); } // Select all rows by default $sql = 'SELECT badge_id, name, description, type FROM ' . $wpdb->prefix . 'rh_badges b WHERE 1=1 '; // If a user ID was entered. if ( array_key_exists('user_ID', $filter) ) { $user_ID = $filter['user_ID']; // Join the rh_user_badges table. $sql = 'SELECT b.badge_id, b.name, b.description, b.type FROM ' . $wpdb->prefix . 'rh_badges b, ' . $wpdb->prefix . 'rh_user_badges ub WHERE b.badge_id = ub.badge_id AND ub.user_id = ' . $user_ID; } // If a badge ID was entered. if ( array_key_exists('badge_ID', $filter) ) { $badge_ID = $filter['badge_ID']; // Append a WHERE clause to the SQL. $sql .= " AND b.badge_id = $badge_ID"; } $badges = $wpdb->get_results( $sql ); return $badges; } function rhb_list_badges( $filter = '' ) { if ( empty($filter ) ) { $filter = array(); } print ''; foreach (rhb_get_badges( $filter ) as $badge) { print '
type ) echo 'bgold'; elseif ( 'silver' == $badge->type ) echo 'bsilver'; elseif ( 'bronze' == $badge->type ) echo 'bbronze'; print '">
' . $badge->name . '
'; } ; }

Wie würde ich es benutzen?

Solutions Collecting From Web of "Verbessern eines Stackoverflow “inspirierten” Badge-Systems zur Anzeige von Badges in der Autorenseite"

get_current_user_id (); ruft die aktuell angemeldete Benutzer-ID ab und Sie benötigen den Benutzer, der profileUrl Views verwendet. Versuchen Sie dies, um die richtige ID zu erhalten:

 $author = get_user_by( 'slug', get_query_var( 'author_name' ) ); echo $author->ID;' 

Ja, also versuchen Sie statt Ihres Codes Folgendes:

 $author = get_user_by( 'slug', get_query_var( 'author_name' ) ); if ($author->ID > 0) { rhb_list_badges(array('user_ID' => $author->ID)); }