Einzelne Profieldaten im Frontend
-
hallo,
kann mir bitte jemand helfen?
Es gelingt mir nicht einzelne Profildaten im Frontend für angemeldete User anzuzeigen. Ich habe auch zusätzlich ein neues Feld angelegt, welches mir die Daten Im Userprofil (Backend) auch anzeigt.
Angeblich soll es damit gehen,
<strong>User Name:</strong> <?php the_author_meta( 'name' ); ?></p>
<strong>E-mail:</strong> <?php the_author_meta( 'email' ); ?></p>Aber es wird nichts Angezeigt. Liegt es vieleicht an PHP 8?
Oder gibt es sonst noch eine Möglichkeit?
mfg
-
Dieses Thema wurde vor 9 Monaten, 3 Wochen von
herb1 geändert.
-
Dieses Thema wurde vor 9 Monaten, 3 Wochen von
-
Hallo,
sonst verwende doch dafür ein Plugin wie z. B. https://de.wordpress.org/plugins/userswp/Viele Grüße
Hans-Gerdhabe ich schon versucht, funktioniert nicht mit der freien Version! Ich benötige nur ein neues Einzelnes Feld welches userspeziefiche Daten für Angemeldete User anzeigt.
Dein o.g. Code zeigt vom Autor eines Beitrags die Daten an. Dir geht es aber doch um den aktuell angemeldeten Nutzer? Das müsste anders gelöst werden. Und welches Feld von diesem willst du genau ausgeben?
Wie hast du vor die Ausgabe im Frontend einzubinden? Nutzt du ein Child-Theme und passt deine PHP-Dateien selbst an oder nutzt du ein Block Theme? Etwas mehr Infos zu deinem Projekt könnten helfen dir auch eine passende Antwort dazu zu geben. Siehe auch: https://de.wordpress.org/support/topic/bevor-du-ein-neues-thema-thread-erstellst/
also so sieht es aus.
add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
function my_show_extra_profile_fields( $user ) { ?>
<h3>Lizenznummer</h3>
<table class="form-table">
<tr>
<th><label for="lizenz">Lizenzen</label></th>
<td><textarea name="lizenz" id="lizenz" rows="8" cols="5"><?php echo esc_attr( get_the_author_meta( 'lizenz', $user->ID ) ); //?></textarea>
<br /> <span class="description">Hier Lizenznummer eintragen.</span>
</td>
</tr>
</table>
<?php }
//Speichern des Feldes
add_action( 'personal_options_update', 'my_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' );
function my_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
// In der nachfolgenden Zeile wird das Feld definiert.
update_usermeta( $user_id, 'lizenz', $_POST['lizenz'] );
}diese Textarea möchte ich im Frontend für den jeweiligen User anzeigen, es beinhaltet HTML Text.
Also der Admin trägt für den jeweiligen User Daten in das Profil ein.
Diese sollen dem angemeldeten User im Frontend angezeigt werden.
-
Diese Antwort wurde vor 9 Monaten, 3 Wochen von
herb1 geändert.
Das würde ich mit https://developer.wordpress.org/reference/functions/get_user_meta/ lösen. Also als ganz minimalistisches und ungetestetes Beispiel:
if( is_user_logged_in() ) {
echo get_user_meta( get_current_user_id(), 'lizenz', true );
}Danke,
<?php echo get_user_meta( get_current_user_id(), 'lizenz', true );?>Zeigt im Frontend auf einer Angemeldeten Seite (Rolle) auch kein Ergebnis.
Deswegen hatte ich es ja mit den Meta Standards probiert unser,Email. Die ebenfalls nicht angezeigt werden. Selbst beim angemeldeten Admin oder zur Probe (Zusatz Rolle Admin) wird nichts angezeigt.
Nicht wild herumprobieren. Emails und Nutzername sind keine User-Meta-Angaben die man mit o.g. Code auslesen kann. O.g. Code ist nur für individuelle Felder gedacht, wie deinem Lizenz-Feld.
Wenn dort nichts ausgegeben wird, prüfe ob der Nutzer bei dem du angemeldet bist in dem Feld wirklich etwas eingetragen hat. Das übersieht man leicht mal.
Ich würde auch empfehlen im Backend nicht get_the_author_meta() zum Auslesen zu verwenden sondern dort ebenfalls get_user_meta() einzusetzen. Also statt
get_the_author_meta( 'lizenz', $user->ID )eher
get_user_meta( $user->ID, 'lizenz', true );Bitte beachte weiterhin, dass das Forum hier eher für Anwenderfragen gedacht ist. Deine Fragen sind sehr technischer Natur und an Entwickler gerichtet, von denen hier eher wenige anwesend sind. Möglicherweise findest du hier in der englischsprachigen Community mehr Hilfe bei deiner individuellen Programmierung: https://wordpress.stackexchange.com
Also der Code betrifft ja nur die Backend-Profilseite. Mit welchem Code soll das denn im Frontend erscheinen? Der Part fehlt und scheint ja der relevantere zu sein.
Wie ist denn der Code aus deinem allerersten Post eingebaut? Also wie versuchst du die Ausgabe im Frontend zu erreichen? Classic-Theme und direkt im Template oder via Shortcode?
Ups, fehlt da noch was?
Habe nichts wieteres gefunden, so sollte es laut veröffentlichung funktionieren.
Ich habe das zum testen erst mal in die funktions.php reingestellt, werde es später wenn es läuft in ein Plugin setzen.Habe nichts wieteres gefunden, so sollte es laut veröffentlichung funktionieren.
Hast du das so direkt in den Block-Editor eingetragen?
<strong>User Name:</strong> <?php the_author_meta( 'name' ); ?></p>
<strong>E-mail:</strong> <?php the_author_meta( 'email' ); ?></p>Dann wundert mich nicht, dass es nicht funktioniert. PHP im Block-Editor wird ja nicht direkt ausgeführt.
Falls ich dich falsch verstanden habe sollte, dann poste mal deine gesamte Vorgehensweise. Schritt für Schritt, inkl. dem gesamten Code. Dann kann ich vermutlich auch helfen.
Alle was ich bisher gepostet habe.
Ich habe mich hier ran Orjentiert.
https://coderwall.com/p/g72jfg/adding-a-phone-numer-field-to-wordpress-user-profile
4.- Jetzt können Sie Ihre Benutzertelefonnummer anzeigen, wo immer Sie wollen. Hier ist ein Exmple:
<strong>Phone Number:</strong> <?php the_author_meta( 'phone' ); ?></p>Heist für mich, ich kann die Zeille in einem HTML Textfeld in der für angemeldete User Seite einfügen.
Wenn nicht, was muß ich tun? Einen Shotcode dafür in die Funktion.php einfügen?So eine Anleitung hilft in dem einen Projektaufbau, aber nicht in allen. Wir wissen leider nicht was bei dir zutrifft. Deine Infos reichen leider weiterhin nicht aus um dir irgendwie helfen zu können. Bitte beantworte doch meine Fragen von oben dazu:
Wie hast du vor die Ausgabe im Frontend einzubinden? Nutzt du ein Child-Theme und passt deine PHP-Dateien selbst an oder nutzt du ein Block Theme? Etwas mehr Infos zu deinem Projekt könnten helfen dir auch eine passende Antwort dazu zu geben. Siehe auch: https://de.wordpress.org/support/topic/bevor-du-ein-neues-thema-thread-erstellst/
Und nochmal: das ist hier ein Anwenderforum. Wenn es dir um individuelle Programmierung geht wirst du woanders vermutlich viele Antworten finden. Die brauchen aber ebenso wie wir mehr Infos von dir um dir helfen zu können.
Wenn nicht, was muß ich tun? Einen Shotcode dafür in die Funktion.php einfügen?
Ja. Wie schon geschrieben: PHP-Code wird im Blockeditor nicht direkt ausgeführt. Das einfachste wäre ein Shortcode. Oder du wechselst auf ein Plugin, was dir diese Funktion direkt liefert, ohne, dass du das selber coden musst.
Also noch einmal erklärt.
Es gibt kein mir bekanntes freiese Plugin was diese Einfache Darstellung anzeigen kann.Ich benutze kein Child, keinen Block(deaktiviert) und setze vorübergehen das PHP in die function,php
Im Benutzerprofil wurde mit der oberen Funktion ein Zusatzfeld (Area) erstellt.
Dort kommen Daten hinein für jeden Einzelnen angelegten User(alle unterschiedlich).
Es funktioniert auch, die Daten werden Userspeziefisch gespeichert und auch Aktualisiert.
Das einzige was ich nicht hinbekomme ist das Anzeigen des Area-Inhaltes auf einer Seite die eine Bestimmte Userrolle hat. Heißt, User1 hat Rolle X und sieht nach dem Einloggen den Menülink dür die Entsprechende Rollen-Seite.
User2 hat Rolle Y und sieht die Seite Y, User3 hat X+Y und kann die Seite X un Y per angezeigten Menü-Links auswählen. Die User Rollen wurden durch das Plugin Members Bereitgestellt.Was mir fehlt, ist das Anzeigen des Feldinhaltes auf der Rollen-Seite(frontend) was der Eingeloggte User sieht.
Ich habe nun versucht ein Shotcode zu erstellen, leider wird auch hiermit nichts angezeigt.
Der Shotcode Funktioniert, wenn ich $message = ‚Hallo‘; schreibe, wird Hallo angezeigt.
get_user_meta( $user->ID, ‚lizenz‘, true ); geht auch nicht, obwohl der Inhalt der anderen Funktion
<?php echo esc_attr( get_user_meta( $user->ID, ‚lizenz‘, true )); //?> in das Backend (aria) übertagen wird.Vielleicht mache ich ja etwas falsch? Hier der Shotcode.
function wpb_lit_shortcode() {
$message = esc_attr( get_user_meta( $user->ID, 'lizenz', true )));
return $message;
}
add_shortcode('lizenzen', 'wpb_lit_shortcode');Danke,
habe es hin bekommen, ein Fehler im ShotcodeDanke für eure Hilfe.
-
Diese Antwort wurde vor 9 Monaten, 3 Wochen von
Das Thema „Einzelne Profieldaten im Frontend“ ist für neue Antworten geschlossen.