Entferne den gelöschten Benutzer-Avatar aus der Liste

Problem

Hallo zusammen, ich habe ein kleines Problem. Ich habe eine function, die die Avatare von Benutzern ausgibt, die mir folgen. Es funktioniert gut, aber wenn der Benutzer gelöscht wird, bleiben die Avatare als leeres Bildfeld mit einem defekten Hyperlink sichtbar, dem der Benutzername des Benutzers fehlt. Gibt es eine Möglichkeit, den gelöschten Benutzeravatar von der Liste loszuwerden?

function

function get_status_following($userid, $count = 0){ $followers = get_the_author_meta('following', $userid); /** if no followers at the moment */ if( !is_array($followers)){ $return = ""; } else { $return = '' . "\n"; } echo $return; } 

Ausgabe der function in einer Seite

 ID) ); ?> ID); ?> 

Vielen Dank für die Hilfe im Voraus

Solutions Collecting From Web of "Entferne den gelöschten Benutzer-Avatar aus der Liste"

Wenn ein Benutzer sagt, dass Benutzer A gelöscht wurde, bereinigen Sie nicht alle Spuren dieses Benutzers.

Sie müssen nämlich in jeden Benutzer nach A gehen und ihn aus seinem Benutzer-Meta entfernen. Aus diesem Grund zeigt Ihre function leere Benutzer an, da sie veraltete Informationen erhalten haben, die nicht mehr aktuell sind, und sich auf Benutzer bezieht, die nicht mehr existieren

Sie möchten dies auf dem Hook deleted_user tun

 // when a user is deleted, the deleted_user action is fired // attach our example_cleanup function to this action/hook add_action('deleted_user','example_cleanup'); // When the deleted_user action/hook/event is fired, this function will be called function example_cleanup($user_id){ // remove this user from the users following this user } 

Ich weiß nicht, ob Sie eine Liste von Benutzern haben, die einem Benutzer folgen, wenn nicht, können Sie dies auch tun, da diese Operation kostspielig sein wird, da Sie jeden einzelnen Benutzer durchlaufen und das Meta entfernen müssen, wenn es nicht mehr funktioniert der gelöschte Benutzer

Hinweis: Ich würde vermeiden, Sprachschlüsselwörter als Namen für Variablen zu verwenden, also keine $function $foreach $return oder $class

Wie ich das umgesetzt hätte

Im Moment haben Sie zwei Sätze von duplizierten Daten. Sie haben ein Stück Meta-Sprichwort A folgt B, und einige Daten, die B sagen, wird gefolgt von A.

Anstatt Benutzer-Meta zu verwenden, hätte ich stattdessen eine Benutzertaxonomie verwendet. Meine Benutzertaxonomie würde “following” heißen und jeder Begriff in der Taxonomie würde einen Benutzer repräsentieren.

Sagen wir, ich habe den Benutzer “admin” und ich habe 5 Follower, Benutzer A, B, C, D und E, jedem Benutzer würde der Begriff “admin” in meiner Taxonomie zugewiesen.

Ich hätte dann eine sehr einfache Möglichkeit zu greifen, wer mir folgt und wem eine Person folgt. Um wp_get_object_terms , wem ich wp_get_object_terms , tue ich nur wp_get_object_terms , um meine Benutzer-ID und nicht eine Post-ID zu übergeben. Um zu sehen, wer mir folgt, ergreife ich alle Objekte, die dem Begriff mit dem gleichen Namen wie ich zugeordnet sind.

Wie erstelle ich eine Anwendertaxonomie?

In diesem Artikel von Justin Tadlock wird alles von den Admin-Benutzeroberflächen über die Registrierung der Taxonomie bis hin zu einer Frontend-Vorlage behandelt

Einige abschließende Notizen, Sie müssen in Benutzer erstellen und löschen, um zugehörige Begriffe für diesen Benutzer zu erstellen / löschen. Ich würde empfehlen, den Anmeldenamen als den Begriff Slug zu verwenden, da er sich nicht ändert, während der Anzeigename bedeutet, dass Sie zusätzliche Arbeit leisten müssen.

Die Vorteile, dies zu tun:

  • Bereinigung ist so einfach wie das Löschen eines Begriffs, kein Durchlaufen der Benutzer und Benutzer-Meta
  • 1 Stück Daten zum Speichern der Follower / Follower nicht 2
  • Es ist eine logischere Beziehung in der database zu folgen
  • Wenn Taxonomie-Anfragen schneller werden, tun Sie das auch
  • Sie können die WordPress-core-APIs verwenden, um auf alle Daten zuzugreifen, die Sie benötigen, anstatt Ihre eigenen Wrapper-functionen zu schreiben. Sie können diesen Teil an die erfahrenen Entwickler auslagern, die selbst an WordPress arbeiten, um Zeit zu sparen
  • Es ist viel einfacher, Listen oder Rankings zu erstellen, wer die meisten Follower hat, auf die gleiche Weise, wie wir einordnen können, welche Kategorien die meisten Posts haben
  • Mit etwas Arbeit können Sie Dinge wie Tagwolken nachrüsten, um für Follower zu arbeiten, die zeigen, wer am meisten visuell hat
  • Sie erhalten das meiste von einer Admin-Schnittstelle für sie direkt aus der Box

Der Nachteil ist, dass es mehr Wissen voraussetzt und für diejenigen, die mit den APIs nicht vertraut sind, mehr anfängliche Anstrengungen erfordert

Schnelle und schmutzige temporäre Korrektur, während Sie Ihre Design-function schreiben. Führen Sie eine get_user_by-Abfrage auf foreach($followers as $follow) . Auf diese Weise drucken Sie nur vorhandene Benutzer, nicht gelöschte.

 foreach( $followers as $folow){ $existing_user = get_user_by('id', $folow); if($existing_user){ // you got a user $return .= "
  • "; $return .= ''; if( get_the_author_meta( 'user_custom_avatar', $folow ) != "" ) { $return .= ''; } else { $return .= get_avatar( get_the_author_meta( 'user_email', $folow ), '40' ); } $return .= ''; $return .= "
  • "; } }