Front-End-Benutzer Meta-Optionen für Benutzer

Ich habe mit diesem Tutorial Benutzer-Meta-Optionen erstellt. Jetzt möchte ich wissen, wie ich Benutzern erlauben kann, bestimmte benutzerdefinierte Benutzer-Meta-Optionen, die ich erstellt habe, zu bearbeiten (zu aktualisieren).

Benutzer haben bereits eine Vorlagenkontoseite, auf der sie Zugriff auf einige Benutzermetaoptionen haben. Ich habe die a-function auf der Benutzerseite hinzugefügt, um das Meta-Feld zu aktualisieren, wenn ich auf die Update-Schaltfläche auf der Seite klicke.

Ich benutze Texteingabefelder für die neuen Benutzermetas. Dies ist der Code, den ich verwendet habe, um die Optionen zu aktualisieren:

add_action( 'personal_options_update', 'my_save_extra_user_fields' ); add_action( 'edit_user_profile_update', 'my_save_extra_user_fields' ); function my_save_extra_user_fields( $userId ) { if ( !current_user_can( 'edit_user', $userId ) ) return false; update_usermeta( $userId, 'address2', $_POST['address2'] ); // Custom meta 1 update_usermeta( $userId, 'address3', $_POST['address3'] ); // Custom meta 2 update_usermeta( $userId, 'hours', $_POST['hours'] ); // Custom meta 3 } 

Aber wenn ich die Seite aktualisiere, werden die vorherigen Werte angezeigt, die im Backend-Bereich (Admin) von WordPress gespeichert sind. Natürlich werden alle im Backend gespeicherten Werte korrekt gespeichert und im Frontend angezeigt. Ich wollte auf jeden Fall sparen, vom Backend und vom Frontend.

Was mache ich falsch? Wie behebe ich das?

Vielen Dank

AKTUALISIEREN:

Hier ist der Code für die Vorlagenseite, mit der Benutzer ihre vorhandenen Metainformationen aktualisieren:

   ID); $userId = $userdata->ID; $location = $userdata->jabber; $lsplit = explode('**',$location); $full_location = ''.$lsplit[2]. ', ' .$lsplit[3]. ' ' .$lsplit[1]. ' ' .$lsplit[4]. ''; // 0 = Country; 1 = State; 2 = Address; 3 = City; 4 = Zip Code; 5 = Phone Number $statesplit = explode(', ', $lsplit[1]); // State split: 0 = State name; 1 = State Abbreviation $location_pt1 = $lsplit[2]; $location_pt2 = ''.$lsplit[3]. ', ' .$statesplit[1]. ' ' .$lsplit[4]. ''; ?> GL_ALERT($GLOBALS['error_msg'],$GLOBALS['error_type']); ?> 

My Account


<a href="javascript:void(0);" onClick="jQuery('#My').hide(); jQuery('#MyDetails').show()" title=""> <img src="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/a1.png" style="float:left; padding-right:20px; margin-top:10px;" />

<img src="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/artwork1.png" style="float:left; padding-right:20px; margin-top:10px;" /> Artwork
Approve your artwork


<a href="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/" title=""> <img src="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/a3.png" style="float:left; padding-right:20px; margin-top:10px;" /> Manage My Offers

<a href="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/" title=""> <img src="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/a5.png" style="float:left; padding-right:20px; margin-top:10px;" /> Create New Offers


<a href="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/" title=""> <img src="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/a2.png" style="float:left; padding-right:20px; margin-top:10px;" />

<a href="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/" title=""> <img src="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/a4.png" style="float:left; padding-right:20px; margin-top:10px;" />


<a href="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/" title=""> <img src="https://wordpress.stackexchange.com/questions/33893/front-end-user-meta-options-for-users/a6.png" style="float:left; padding-right:20px; margin-top:10px;" />

Account Details


<input type="text" value="user_login; ?>" disabled class="short" />


<input type="text" name="form[user_email]" value="user_email; ?>" class="short" tabindex="10" />


<input type="text" name="form[user_url]" value="user_url; ?>" class="short" tabindex="11" />




<input type="text" name="form[first_name]" value="first_name; ?>" class="short" tabindex="12" />


<input type="text" name="form[last_name]" value="last_name; ?>" class="short" tabindex="13" />


<input type="text" name="address[address]" value="" class="short" tabindex="17" />


<select type="text" name="address[state]" id="first" value="" class="short" tabindex="15">


<select type="text" name="address[city]" id="second" value="" class="short" tabindex="16">


<input type="text" name="address[zip]" value="" class="short" tabindex="18" />


<input type="text" name="address[phone]" value="" class="short" tabindex="19" />

ID == 1){ ?>


<input type="text" name="address2" id="address2" value="" class="short" />
Eg Street Address, City, State Zipcode


<input type="text" name="address3" id="address3" value="" class="short" />
Eg Street Address, City, State Zipcode


<input type="text" name="hours" id="hours" value="" class="short" />
Enter your hours of operation. (Optional)





ID == 1){ ?>

<input type="submit" name="submit" id="submit" class="button grey" tabindex="15" value="" />

Sie können, dass ich drei Test-Meta-Felder (Adresse 1, Adresse 2 und Stunden) erstellt habe, aber ich bin nicht in der Lage, sie vom Front-End der Website zu speichern.

Solutions Collecting From Web of "Front-End-Benutzer Meta-Optionen für Benutzer"

“edit_user_profile_update” ist keine Aktion … check: http://codex.wordpress.org/Plugin_API/Action_Reference

update_usermeta () ist in wp 3 und höher veraltet, benutze update_user_meta ()

Ihrem Formular fehlen einige versteckte Standardfelder wie:

  

Verwende wp_nonce_field (); zB: < ?php wp_nonce_field( 'update-user_' . $current_user->ID ) ?>

Aber wenn ich die Seite aktualisiere, werden die vorherigen Werte angezeigt, die im Backend-Bereich (Admin) von WordPress gespeichert sind. Natürlich werden alle im Backend gespeicherten Werte korrekt gespeichert und im Frontend angezeigt. Ich wollte auf jeden Fall sparen, vom Backend und vom Frontend.

Hatte gerade dieses Problem selbst.

In Anbetracht der Tatsache, dass das Meta tatsächlich aktualisiert wurde, aber einfach nicht angezeigt wurde, entschied ich mich einfach dafür

  < ?php if (isset($_POST['address_field'])) { echo $_POST['address_field']; } else { echo get_user_meta( get_current_user_id(), 'address_field', true ); 

?>

Das zeigte die Werte, auf die es aktualisiert wurde