So bearbeiten Sie das benutzerdefinierte Benutzermetainformationen-Frontend

Ich versuche, Benutzern zu erlauben, benutzerdefinierte user_meta Felder am vorderen Ende der Site zu aktualisieren. Es funktioniert gut auf der Rückseite aber auf einer vorderen Endseite, wenn man auf die Aktualisierung klickt, wird die Seite leer, aber das Benutzermeta immer noch aktualisierend. Kann jemand helfen, mein leeres Seitenproblem zu lösen.

Ich hatte ursprünglich diese Frage gefunden Wie man ein Benutzerprofil am Frontend bearbeitet? . Ich werde den Code unten veröffentlichen, ich denke, dass sie etwas falsch mit dem PHP oben auf der Seite sein müssen, was dies passiert.

Vorherige Postantwort:

Sie können das tun, indem Sie die page.php Ihres Themas in eine neue Datei mit dem Namen sounds wie user-profile.php kopieren und ganz oben diesen Code hinzufügen:

/* Update user password. */ if ( !empty($_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) { if ( $_POST['pass1'] == $_POST['pass2'] ) wp_update_user( array( 'ID' => $current_user->ID, 'user_pass' => esc_attr( $_POST['pass1'] ) ) ); else $error[] = __('The passwords you entered do not match. Your password was not updated.', 'profile'); } /* Update user information. */ if ( !empty( $_POST['url'] ) ) wp_update_user( array( 'ID' => $current_user->ID, 'user_url' => esc_url( $_POST['url'] ) ) ); if ( !empty( $_POST['email'] ) ){ if (!is_email(esc_attr( $_POST['email'] ))) $error[] = __('The Email you entered is not valid. please try again.', 'profile'); elseif(email_exists(esc_attr( $_POST['email'] )) != $current_user->id ) $error[] = __('This email is already used by another user. try a different one.', 'profile'); else{ wp_update_user( array ('ID' => $current_user->ID, 'user_email' => esc_attr( $_POST['email'] ))); } } if ( !empty( $_POST['first-name'] ) ) update_user_meta( $current_user->ID, 'first_name', esc_attr( $_POST['first-name'] ) ); if ( !empty( $_POST['last-name'] ) ) update_user_meta($current_user->ID, 'last_name', esc_attr( $_POST['last-name'] ) ); if ( !empty( $_POST['description'] ) ) update_user_meta( $current_user->ID, 'description', esc_attr( $_POST['description'] ) ); /* Redirect so the page will show updated info.*/ /*I am not Author of this Code- i dont know why but it worked for me after changing below line to if ( count($error) == 0 ){ */ if ( count($error) == 0 ) { //action hook for plugins and extra fields saving do_action('edit_user_profile_update', $current_user->ID); wp_redirect( get_permalink() ); exit; } } ?> 

Ersetzen Sie dann die Schleife dieser Seite durch diese:

  <div id="post-"> 

0 ) echo '

' . implode("
", $error) . '

'; ?> <form method="post" id="adduser" action="">

<input class="text-input" name="first-name" type="text" id="first-name" value="ID ); ?>" />

<input class="text-input" name="last-name" type="text" id="last-name" value="ID ); ?>" />

<input class="text-input" name="url" type="text" id="url" value="ID ); ?>" />

<input name="updateuser" type="submit" id="updateuser" class="submit button" value="" />

Sie müssen lediglich eine neue Seite erstellen und das “Benutzerprofil” als Seitenvorlage auswählen.

Ende des vorherigen

Wenn jemand eine Lösung hat, würde es sehr helfen.

Solutions Collecting From Web of "So bearbeiten Sie das benutzerdefinierte Benutzermetainformationen-Frontend"

Ich habe es getriggers.

In der Umleitung habe ich if (count($error) == 0 ){ geändert if (count($error) == 0 ){ to if (count($error) < 1 ){

Auch für jeden benutzerdefinierten Benutzer Meta-Felder hinzugefügt dupliziert die folgende Zeile und ändern Sie das Wort "Beschreibung" auf den Namen des Feldes erstellen in Ihrer functionsdatei.

 if ( !empty( $_POST['description'] ) ) update_user_meta( $current_user->ID, 'description', esc_attr( $_POST['description'] ) );