Date aus Datenbank an anderer Stelle nutzen
-
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
-
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"]
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 4 Jahren, 4 Monaten von
Bego Mario Garde. Grund: Code hinzugefügt
„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 aufwp_usermeta
zugreifen?Trotzdem Danke, dass du den Thread als „gelöst“ markiert hast.
-
Diese Antwort wurde geändert vor 4 Jahren, 4 Monaten von
- Das Thema „Date aus Datenbank an anderer Stelle nutzen“ ist für neue Antworten geschlossen.