Support » Plugins » Date aus Datenbank an anderer Stelle nutzen

  • Gelöst hendev

    (@hendev)


    Hallo zusammen,
    kennt jemand eine Möglichkeit wie ich von einem eingeloggten Benutzer via BenutzerId aus der Datenbank (usermeta) einen Wert abfragen kann (Bei mir explizit Vorname und Nachname) und diesen anschließend in einem Plugin/auf einer Seite (bei mir explizit Contact Form 7) nutzen kann? So, dass sich beispielsweise „Hallo [Vorname][Nachname]!“ anzeigen lässt?

    LG

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Du kannst in der functions.php deines Child-Themes oder (wenn du kein Child-Theme verwendest) als Snippet mit dem Plugin Code Snippets folgenden Code einfügen, um einen Shortcode für den Anzeigenamen des angemeldeten Benutzers auszugeben:

    add_shortcode( 'username', 'define_shortcode_username' );
    function define_shortcode_username() {
      if( is_user_logged_in() ) {
        $user = wp_get_current_user();	
        $nickname = $user->display_name;
    
        return $nickname;
      } else {
        return 'Besucher';
      }
    }

    Für nicht angemeldete Benutzer wird dann statt des Namens „Besucher“ ausgegeben (ich war hier zugegeben nicht besonders kreativ).

    In der Seite mit dem Formular kannst du dann z.B.

    Hallo [username]

    eingeben und direkt anschließend einen Block für das Kontaktformular einfügen.

    Das Kontaktformular sollte dann im Eingabefeld für den Namen bereits den Anzeigenamen vorausgefüllt haben, was du über das Attribut default:user_display_name erreichst:

    <label> Dein Name
        [text* your-name default:user_display_name] </label>
    
    <label> Deine E-Mail-Adresse
        [email* your-email] </label>
    
    <label> Betreff
        [text* your-subject] </label>
    
    <label> Deine Nachricht (optional)
        [textarea your-message] </label>
    
    [submit "Senden"]
    Thread-Ersteller hendev

    (@hendev)

    Erst einmal vielen Dank für die wirklich gute Erklärung. Ich brauche prinzipiell nur den Teil für Contactform 7.
    Jedoch speichert sich der Name meiner Nutzer nicht in der wp-user Tabelle in der Spalte display_name, sondern aufgrund eines eigenen Registrierunsformulars von Ultimate Member in der Tabelle wp_usermeta unter der Spalte user_name (diese ID ist selbstdefiniert).
    Gibt es auch die Möglichkeit für den eingeloggten Nutzer diese Date abzufragen?

    LG und Danke im vorraus für antworten

    Mit dem Plugin Contact Form 7 Dynamic Text Extension kannst du als Vorgabewert für Formularfelder auch eigene PHP-Funktionen verwenden. Nach der Installation des Plugins änderst du das Eingabefeld für den Namen in

    <label> Dein Name
    [dynamictext* your-name "username"]</label>

    wobei "username" einen Shortcode angibt, der über eine PHP-Funktion die User-Metadaten abruft und als Vorgabewert ausgibt:

    add_shortcode( 'username', 'define_shortcode_username' );
    function define_shortcode_username() {
    	if( is_user_logged_in() ) {
    		$user_id = get_current_user_id();
            $separator = '';
    		$single  = true;
    		$first   = get_user_meta( $user_id, 'first_name', $single );
    		$last    = get_user_meta( $user_id, 'last_name', $single );
    		if( $first && $last ) {
    			$separator = ' ';
    		}
    		return $first . $separator . $last;
    		
    	} else {
    		return 'Besucher';
    	}
    }

    In dem Code-Beispiel habe ich Vor- und Nachnamen des angemeldeten Benutzers verwendet, aber du kannst natürlich auch nur das Feld user_name ausgeben:

    add_shortcode( 'username', 'define_shortcode_username' );
    function define_shortcode_username() {
    	if( is_user_logged_in() ) {
    		$user_id = get_current_user_id();
    		$single  = true;
    		$user_name   = get_user_meta( $user_id, 'user_name', $single );
    		return $user_name;
    		
    	} else {
    		return 'Besucher';
    	}
    }

    Denk bitte daran, dass wir hier Hilfe zur Selbsthilfe anbieten möchten und eigentlich nicht auf Zuruf kostenlos Programmieraufgaben übernehmen. Ich bin dir hier schon sehr entgegengekommen.

    • Diese Antwort wurde geändert vor 2 Monaten, 2 Wochen von Bego Mario Garde. Grund: Code hinzugefügt
    Thread-Ersteller hendev

    (@hendev)

    „Denk bitte daran, dass wir hier Hilfe zur Selbsthilfe anbieten möchten und eigentlich nicht auf Zuruf kostenlos Programmieraufgaben übernehmen. Ich bin dir hier schon sehr entgegengekommen.“
    Das wäre auch garnicht nötig gewesen, die erste Nachricht mit „ich habe keine Zeit“ hätte mir völlig gereicht.
    Übrigens falls noch jemand irgendwann das gleiche Vorhaben hat lässt sich auch einfach:
    [dynamictext inputname "CF7_get_current_user key='user_name'"]
    abfragen. Trotzdem Danke für deine Mühe @pixolin.

    Das motiviert ungemein, künftig Fragen weniger ausführlich zu beantworten.
    Außerdem wolltest du doch auf wp_usermeta zugreifen?

    Trotzdem Danke, dass du den Thread als „gelöst“ markiert hast.

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)