it-swarm.com.de

Benutzerdaten zur Tabelle hinzufügen, wenn Benutzer erstellt wird?

Ich versuche herauszufinden, wie Benutzerinformationen und bestimmte Metadaten über PHP zu einer separaten Tabelle hinzugefügt werden können. Ich würde dies vorziehen, wenn ein Benutzer in die wp_users- und wp_usermeta-Tabelle geschrieben hat. Ich benutze das WooCommerce Auction Plugin und das Salient Theme.

Auch wenn ich eine PHP -Datei erstellt habe, in der eine Abfrage zum Abrufen der Daten und zum Einfügen ausgeführt wurde, wo kann ich diese Funktion dann aufrufen, um sicherzustellen, dass die Tabelle auf dem neuesten Stand ist?

Dies ist die Funktion, die ich erstellt habe.

add_action('user_register', 'save_to_donors',10,1);

function save_to_donors( $user_id ) {

    $single = true;

    $user_email = get_userdata($user_id);

    $fn= get_user_meta($user_id, 'first_ name', $single );
    $ln= get_user_meta($user_id, 'last_name', $single );
    $em= $user_email->user_email;
    $ph= get_user_meta($user_id, 'billing_phone', $single );
    $ad= get_user_meta($user_id, 'billing_address_1', $single );
    $ci= get_user_meta($user_id, 'billing_city', $single );
    $st= get_user_meta($user_id, 'billing_state', $single );
    $zi= get_user_meta($user_id, 'billing_postcode',$single );
    $do= get_user_meta($user_id, '_money_spent', $single );

    $sql = "INSERT INTO donors (user_id,first_name,last_name,email," .
    "phone,address,city,state,Zip,amount_donated)".
    "VALUES('$user_id','$fn','$ln','$em','$ph','$ad','$ci','$st','$zi','$do')";

    $result = mysqli_query($wpdb, $sql) or die('Write Error!');

 }
1
dozer

Meiner Meinung nach sollten Sie nach einem Woocommerce-Kaufabschlusshaken suchen. Dies wäre, wenn Sie hinzufügen könnten, dass eine Spende getätigt wurde und in welcher Höhe, dann könnten Sie alle Benutzerinformationen, gespendeten Beträge und andere Informationen, die Sie benötigen, abrufen und in Ihrem Spendertisch speichern.

benutze das:

add_action('woocommerce_order_status_completed', 'save_to_donors',10,1);

an Stelle von:

add_action('user_register', 'save_to_donors',10,1);

ändern Sie außerdem $user_id in $order_id als Parameter, der an Ihre Funktion übergeben wird.

Sie müssen einige Änderungen an Ihrer Funktion vornehmen, da jetzt $order_id anstelle von $user_id an Ihre Funktion übergeben wird. Sie können den folgenden Code verwenden, um das $order-Objekt und den $user_id-Code abzurufen. Ich habe auch einen anderen Code gefunden, mit dem Sie Informationen aus der Bestellung im Vergleich zu den Benutzer-Metas abrufen können.

$order = new WC_Order( $order_id );
$user_id = $order->user_id;
$billing_address = $order->get_billing_address();
$billing_address_html = $order->get_formatted_billing_address(); // for printing or displaying on web page
$shipping_address = $order->get_shipping_address();
$shipping_address_html = $order->get_formatted_shipping_address(); // for printing or displaying on web page

Info zur Verwendung dieses Hooks woocommerce_order_status_completed
Informationen darüber, wie die Benutzer-ID aus der Bestell-ID abgerufen wird

1
stoi2m1

Mit diesem Aktions-Hook können Sie unmittelbar nach dem Hinzufügen zu der Datenbank auf Daten für einen neuen Benutzer zugreifen. Die Benutzer-ID wird als Argument an hook übergeben.

Nicht alle Benutzer-Metadaten wurden in der Datenbank gespeichert, als diese Aktion ausgelöst wurde. Beispiel: Der Kurzname befindet sich in der Datenbank, jedoch Vor- und Nachname. Das Passwort wurde bereits verschlüsselt, als diese Aktion ausgelöst wurde.

In der Regel wird dieser Hook zum Speichern zusätzlicher Benutzermetas verwendet, die von benutzerdefinierten Registrierungsformularen übergeben werden.

In diesem Beispiel wird ein Vorname-Feld gespeichert, das von einem benutzerdefinierten Registrierungsfeld übergeben wird.

Beachten Sie auch, dass die Validierung von Registrierungsfeldern nicht in diesem Hook durchgeführt werden sollte! Validieren Sie stattdessen mit dem Hook registration_errors (der Hook user_register wird nicht aufgerufen, wenn die Validierung von registration_errors fehlschlägt).

add_action( 'user_register', 'myplugin_registration_save', 10, 1 );

function myplugin_registration_save( $user_id ) {

    if ( isset( $_POST['first_name'] ) )
        update_user_meta($user_id, 'first_name', $_POST['first_name']);

}
1
Owais Alam

HINWEIS: Diese Antwort ist für die Frage des OP nach weiterer Analyse der hinzugefügten/aktualisierten Funktion in der Frage irrelevant. Ich lasse diese Antwort unverändert und erstelle eine neue Antwort für den historischen Gebrauch, da ein Teil der Frage zutreffend zu sein scheint.

Sie können Folgendes verwenden, um Benutzer-Metas zu erstellen, wenn Benutzer zur Benutzertabelle hinzugefügt werden. Fügen Sie dies in die functions.php-Datei Ihres Themas ein.

function myplugin_registration_save( $user_id ) {

    if ( isset( $_POST['first_name'] ) )
        update_user_meta(
            $user_id, 
            'your_key', // name of key 
            $your_value // value of your key
        );

}
add_action( 'user_register', 'myplugin_registration_save', 10, 1 );

Um diese Daten für eine spätere Verwendung abzurufen, verwenden Sie die Funktion:

get_user_meta($user_id, 'your_key', $single);

Weitere Informationen zu user_register hook Weitere Informationen zu update_user_meta () Weitere Informationen zu get_user_meta ()

0
stoi2m1