Holen Sie sich Benutzereingaben aus einem Formular

Ich versuche, ein Formular zu erstellen, mit dem Benutzer ihre Informationen am Frontend aktualisieren können. Ich fange gerade an, PHP zu lernen (ich kenne C # sehr gut). Wenn ich diesen Code verwende, um ein Formular auf einer WordPress-Seite zu erstellen, wie erhalte ich die Informationen vom Benutzer, wenn er auf die Schaltfläche “Aktualisieren” klickt und dann die database aktualisiert?

function Insert_AccountTable_1() { $current_user = wp_get_current_user(); if ($current_user->ID != 0) { return <<<HTML 

Name


$current_user->user_login Usernames cannot be changed.
user_firstname"/>
user_lastname"/>
display_name"/>

Contact Info


user_email"/>
user_url"/>
Update
HTML; } else { return <<<HTML

Error - User not logged in

HTML; } } add_shortcode('InsertAccountTableI', 'Insert_AccountTable_1');

Solutions Collecting From Web of "Holen Sie sich Benutzereingaben aus einem Formular"

Verwenden Sie wp-admin/admin-post.php als Formularaktionshandler und binden Sie Ihre benutzerdefinierte function als Callback an diesen.

Ein einfaches Beispiel für E-Mail-Updates. Wir werden hier einen Shortcode namens [userform] , aber Sie können auch eine Vorlage verwenden.

 add_shortcode( 'userform', 'wpse_75723_userform' ); add_action( 'admin_post_update_user_email', 'wpse_75723_update' ); /** * Create the form. */ function wpse_75723_userform() { $here = esc_url( home_url( $_SERVER['REQUEST_URI'] ) ); if ( ! is_user_logged_in() ) return 'You have to log in to use this page.'; $action = admin_url( 'admin-post.php'); $user_id = get_current_user_id(); return "
"; } /** * Update user email */ function wpse_75723_update() { if ( ! isset ( $_POST['user_id'] ) ) die( 'no id' ); $user_id = absint( $_POST['user_id'] ); if ( ! current_user_can( 'edit_user', $user_id ) ) die( 'not allowed' ); if ( ! isset ( $_POST['email'] ) ) die( 'no email' ); if ( ! is_email( $_POST['email'] ) ) die( 'invalid email' ); $user = get_userdata( $user_id ); if ( empty ( $user->user_login ) ) die( 'user denied' ); global $wpdb; $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->users} SET user_email = %s WHERE user_login = %s", $_POST['email'], $user->user_login ) ); $location = isset ( $_POST['redirect'] ) ? urldecode( $_POST['redirect'] ) : home_url( '/' ); wp_redirect( $location, 303 ); exit; }

Einfügen …

 [userform] 

… in eine Seite wird ein Grundformular erzeugen:

Bildbeschreibung hier eingeben

Der Benutzer kann hier seine E-Mail-Adresse ändern.

Um zu verstehen, welche Variablen verfügbar sind und wo sie gespeichert sind, schauen Sie sich diese Dateien an:

  • wp-admin/user-edit.php
  • wp-admin/includes/user.php und
  • wp-includes/user.php

Die Tabellen users und user_meta sind ebenfalls einen Blick wert, wenn Sie user_meta SQL-Abfragen senden möchten.