Zusätzliche Profilfelder in Admin anzeigen – Problem mit Unterstrich

Ich speichere zusätzliche Profilfelder zu den Profilen meiner Benutzer – nicht über User Admin, sondern über eine andere Methode (ein Plugin, aber das ist nicht wichtig – alle Benutzerdaten sind dort richtig).

Jetzt möchte ich auch die zusätzlichen Informationen über Benutzerprofile im Admin-Backend anzeigen und sie auch dort editierbar machen. Ich habe den Justin Tadlock Code unter http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields verfolgt – das bedeutet, dass ich einige functionen und functionen hinzugefügt habe .php, um die Anzeige und Aktualisierung dieser Felder im Backend zu unterstützen.

Das Problem ist, dass Felder, deren Namen Unterstriche enthalten, die Ergebnisse nicht korrekt zurückgeben.

dh. Während ich den Wert von “Firma” richtig zurückgeben kann, wird der Wert von “Firma_url” auch zurückgegeben, als wäre es “Firma” (z. B. “Microsoft” statt ” http://www.microsoft.com “).

Meine zwei functionen sind unten. Ich habe die Speicherfunktion noch nicht aktualisiert, da dies die Benutzerdaten nur mit einem Duplikat des Wertes “Firma” beschädigen würde. Ich habe viele Feldnamen, die “_” enthalten, also wird das wichtig sein.

/* * Extra profile fields: Show on user admin backend * http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields */ add_action( 'show_user_profile', 'mysite_show_user_meta' ); add_action( 'edit_user_profile', 'mysite_show_extra_profile_fields' ); function mysite_show_extra_profile_fields( $user ) { ?> 

Extra profile information

<input type="text" name="twitter" id="twitter" value="ID ) ); ?>" class="regular-text" />
Please enter your Twitter username.
<input type="text" name="company" id="company" value="ID ) ); ?>" class="regular-text" />
Please enter your company.
<input type="text" name="company_url" id="company_url" value="ID ) ); ?>" class="regular-text" />
Please enter your company website URL.
<input type="text" name="photo_url" id="photo_url" value="ID ) ); ?>" class="regular-text" />
Please enter your photo URL.
<?php } /* * Extra profile fields: Save * http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields */ add_action( 'personal_options_update', 'mysite_user_meta' ); add_action( 'edit_user_profile_update', 'mysite_user_meta' ); function mysite_user_meta( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return false; /* Copy and paste this line for additional fields. Make sure to change 'twitter' to the field ID. */ update_usermeta( $user_id, 'twitter', $_POST['twitter'] ); }

Solutions Collecting From Web of "Zusätzliche Profilfelder in Admin anzeigen – Problem mit Unterstrich"

Sie sollten Ihre Feldnamen wirklich mit einem Bindestrich (-) anstelle eines Unterstrichs umbenennen. Es gibt keine andere Lösung als das Ersetzen der Unterstriche (_) für die Bindestriche (-). Ich habe irgendwo gelesen, dass das Problem mit den neuen php-Namenskonventionen zusammenhängt und bei Verwendung in functionen die Wörter trennt, wenn ein Unterstrich verwendet wird. Und da WordPress php in seinen corefunktionen verwendet, ist es immer noch ein Fehler. Es tut mir leid, dass Ihr Problem nicht getriggers werden konnte, aber wenn das Formular der einzige Ort ist, wo Ihre Felder sind

Follow-up – es ging nicht um ein Unterstrichproblem. Das Problem war meins. Der Wert von company_url entspricht dem Wert der Firma. Das war meine Schuld, weil ich die Daten durch den Import falsch dupliziert habe. Dies wurde behoben, indem man es richtig importierte.