Support » Allgemeine Fragen » wp_update_user bzw. update_user_meta speichert nicht

  • Moin Zusammen,

    es geht bei mir um wp_update_user() bzw. update_user_meta(). Ich hab schon lauter Foren Einträge gecheckt und meine ich mach alles richtig, aber es klappt nicht.

    Ich möchte ganz simpel den Vornamen des Benutzer im Frontend über Ajax speichern / ändern.

    Ich hab im Frontend ein Input-Feld wo der Name eingetragen wird. Ich hol mir den Namen auf click per jQuery + die User ID und übergebe diese mit ajax an mein PHP Script. Die korrekten Daten gehen rein und kommen auch zurück und es gibt keinen Fehler, aber er speichert die Daten einfach nicht ab. Im Script hab ich jetzt mal beide Varianten aufgeführt. Meine Ajax Action lautet: ajax_update_user

    php:

    function ajax_update_user() {
    
    	$currentuserid = (int) $_POST['currentuserid'];
    	$user_firstname = $_POST['user_firstname']);
    
    	update_user_meta( $currentuserid, 'first_name', $user_firstname );
    
    $user_data = wp_update_user( array( 'ID' => $currentuserid, 'first_name' => $user_firstname ) );
    
    	echo $currentuserid . $user_firstname; //rückgabe überprüfen - klappt
    	
     wp_die();// leave ajax call
    }
    
    add_action('wp_ajax_nopriv_ajax_update_user', 'ajax_update_user' );
    add_action('wp_ajax_ajax_update_user', 'ajax_update_user' );

    Ich hoffe ihr könnt mir sagen was ich falsch mache.

    Danke!!
    Viele Grüße
    Sebastian

Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • Was kommt denn bei $user_data als Return-Wert zurück?

    Klarstellung: In der Funktion ajax_update_user kommen alle Daten aus dem Frontend, mehrmals getestet, an?
    So wie du das auch beschreibst. (Aka die erste Nachfrage eines Technikers, ob das Kabel eh angesteckt ist 😀 )

    MOOOOOOOOOOOOOOOMENT!
    Was oft für Verwirrung stiftet ist:
    WordPress speichert nicht, wenn versucht wird, die bereits gespeicherten Daten 1:1 zu speichern.

    Kann es sein, dass du im Frontend immer mit den gleichen Daten versuchst, deine Funktion zu testen???

    • Diese Antwort wurde geändert vor 2 Jahren, 11 Monaten von souri.
    • Diese Antwort wurde geändert vor 2 Jahren, 11 Monaten von souri.
    Thread-Starter sebastian1234

    (@sebastian1234)

    Wenn ich $user_data ausgebe kommt zur Zeit die User ID zurück. Hab auch mal aus der Doku das getestet, hat auch geklappt, also „success“:

    if ( is_wp_error( $user_data ) ) {
        // There was an error; possibly this user doesn't exist.
        echo 'Error.';
    } else {
        // Success!
        echo 'User profile updated.';
    }

    Ja die richtigen Daten(ID und Name) werden auch korrekt in der „success function“ zurück gespielt.

    success: function( entry_success ) { //response ist returned data
    					alert(entry_success);
    					location.reload();
    }

    Ok! Wie machst du fest, dass Speichervorgang dann fehl schlägt???
    Bist du, zb per phpmyadmin, in die DB gegangen und hast das kontrolliert?
    Hast du das mit WordPress-Funktionen getestet?

    Thread-Starter sebastian1234

    (@sebastian1234)

    Gerade erst deine angepasste Antwort gesehen. Ganz verstehen tue ich es nicht was du meinst. Ich hole den aktuellen Vornamen(zb:Rose) und schreibe es ins Value Attribut meines Input Felds. Dann schreibe ich einfach etwas hinten dran(Rose asdf) und klick auf speichern. Die Seite lädt nach dem Script nach und es steht halt immer noch Rose drin. Bin aber auch schon mal ins Backend und habe under Benutzer nachgeschaut. Datenbank hab ich jetzt nicht gecheckt.

    Check mal die DB pls!

    Thread-Starter sebastian1234

    (@sebastian1234)

    In der DB ist der first_name nachdem speichern leider auch immer noch „Rose“. Ich hol mir ja auch immer den aktuellen first_name des users.

    Puh, sorry – da fällt MIR leider dazu nix mehr ein. Wenn du nirgendwo eine Fehlermeldung bekommst, die Speichervorgänge durchgehen, laut Antwort der Funktionen….
    Dann fällt mir nichts ein, warum das dann DENNOCH nicht in der DB drin ist.

    Thread-Starter sebastian1234

    (@sebastian1234)

    Verdammt, wie kann das denn sein .. Ja ich hab auch schon alles durchsucht an Foren und alle machen es gleich.

    Trotzdem vielen Dank!! Hier noch mal kurz mein Ajax, kannst du da noch mal drüber schauen, müsste doch auch korrekt sein, es läuft wie gesagt ja auch durch.

    jQuery(document).ready(function(event){
    
    		var currentuserid = jQuery('#content').attr("data-user-id"); //userid holen			
    					
    jQuery('.profil-speichern').click(function(e){ //finaler eintrags Button klick
    
    var user_firstname = jQuery('#vorname').val(); //firstname holen
    	var user_lastname = jQuery('#nachname').val(); //lastname holen
    	alert(currentuserid + ' ' + user_firstname + ' ' + user_lastname);
    		jQuery.ajax({ 
    			type: 'POST',
    			url: '<?php echo admin_url('admin-ajax.php');?>',
    			dataType: "html", // add data type
    			data: { action : 'ajax_update_user', currentuserid: currentuserid, user_firstname: user_firstname, user_lastname: user_lastname }, // function call from function.php and give param zum script
    			success: function( entry_success ) { //response ist returned data
    					alert(entry_success);
    					location.reload();
    							}
    					});	
    		});					
    });
    Thread-Starter sebastian1234

    (@sebastian1234)

    Hat denn sonst keiner eine Idee wodran es liegen kann?

Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • Das Thema „wp_update_user bzw. update_user_meta speichert nicht“ ist für neue Antworten geschlossen.