Problem mit hebräischen Zeichen in Benutzername

Ich habe ein Plugin geschrieben, um hebräische Zeichen in Benutzernamen zu aktivieren. Dies ist der vollständige Code:

add_filter ('sanitize_user', 'hu_sanitize_user', 10, 3); //Overrides the WordPress sanitize_user filter to allow hebrew letters and english letters only function hu_sanitize_user ($username, $raw_username, $strict) { //Strip HTML Tags $username = wp_strip_all_tags ($raw_username); //Remove Accents $username = remove_accents ($username); //Kill octets $username = preg_replace ('|%([a-fA-F0-9][a-fA-F0-9])|', '', $username); //Kill entities $username = preg_replace ('/&.+?;/', '', $username); if ($strict){ //Replace $username = preg_replace( '[\p{Hebrew}a-zA-Z]', '', $username ); } //Remove Whitespaces $username = trim ($username); // Consolidate contiguous Whitespaces $username = preg_replace ('|\s+|', ' ', $username); return $username; 

}

Es funktioniert gut, aber das Problem ist, dass wenn die Länge des Benutzernamens mehr als 8 Zeichen beträgt, kein Benutzer in der Benutzerliste erstellt wird. Es sendet jedoch immer noch eine Bestätigungs-E-Mail, dass der Benutzer erstellt wurde – mit dem Namen und der E-Mail-Adresse, die in der Nachricht fehlen.

Irgendwelche Ideen, was ich falsch mache?

Solutions Collecting From Web of "Problem mit hebräischen Zeichen in Benutzername"

Dies ist keine vollständige Antwort, aber es ist ein Versuch, Ihnen eine Richtung zu geben. Hoffentlich mit der Community hier können wir eine Lösung für Sie finden!

Erstens konnte ich Ihr Problem replizieren:

  1. Ich habe Ihren Code genommen und ihn vorerst in die functions.php meines Themes gestellt.
  2. Ich habe den if( $strict ) Test entfernt
  3. Ich habe versucht, einen 8-stelligen hebräischen Namen zu registrieren – es hat funktioniert
  4. Ich habe Ihre function entfernt und es erneut versucht – es ist fehlgeschlagen (dies bestätigt, dass Ihre function funktioniert)
  5. Ich habe deine function hinzugefügt und mit einem hebräischen Namen mit 9 Zeichen versucht – es ist fehlgeschlagen

(Für nicht-hebräische Sprecher folgte ich einfach Google Translate und übersetzte meinen eigenen Namen ins Hebräische und ließ dann Zeichen fallen).

Wenn es nicht funktionierte, war der Fehler, den ich bekam:

FEHLER: Konnte dich nicht registrieren … bitte kontaktiere den Webmaster!

Ich habe diesen Fehler noch nie zuvor gesehen. Es kommt von wp-includes / user.php . Was dies uns sagt, ist die Reihenfolge, in der wp_create_user() und daher wp_insert_user() entweder false oder ein wp_insert_user() .

wp_insert_user() hat eine Menge Filter, die wir möglicherweise einsetzen können, um diese Arbeit zu unterstützen. Es kann sein, dass einer von diesen stolpert.

Alternativ kann es sich um ein databaseproblem handeln. Diese StackOverflow-Antwort enthält einige Ideen zur Unterstützung von hebräischen Zeichen in einer MySQL-database. Meine Tabellencodierung war bereits auf utf8_general_ci eingestellt, aber meine database selbst war nicht, also habe ich das geändert und leider nicht getriggers. Ich habe auch versucht, die SET NAMES Abfrage über wpdb auszuführen , aber es ist möglich, dass es nicht so funktioniert.

Wohin von hier

Ich bin kaum ein databaseexperte, also bin ich mir nicht sicher, ob dies eine databasebeschränkung ist, die wir am Ende vielleicht nicht umgehen können. Im wp_insert_user() denke ich, dass die beste Chance in einem der Filter liegt, die wp_insert_user() durchlaufen.

Momentan habe ich keine Zeit, diese intensiv zu durchforsten und herauszufinden, wo es stolpert, aber hoffentlich hast du einen guten Start. Wenn ich kann, komme ich zurück und schaue, was ich sonst noch finden kann.