• Gelöst herb1

    (@herb1)


    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 8 Monaten, 3 Wochen von herb1 geändert.
Ansicht von 8 Antworten – 16 bis 23 (von insgesamt 23)
  • Woher kommt $user? Das ist ja gar nicht definiert. Und du öffnest 2 Klammern, aber schließt 3 … Und warum nutzt du esc_attr (Escaping für die Verwendung in HTML-Attributen) und nicht esc_html?

    Klappt es vielleicht hiermit:

    function wpb_lit_shortcode() {
    $current_user = wp_get_current_user(); // Aktuellen Benutzer holen
    $message = esc_html( get_user_meta( $current_user->ID, 'lizenz', true ) );
    return $message;
    }
    add_shortcode('lizenzen', 'wpb_lit_shortcode');
    Thread-Starter herb1

    (@herb1)

    Das Einzige was geht ist

    function wpb_lit_shortcode() { 
    if( is_user_logged_in() ) {
    $message = get_user_meta(get_current_user_id(), 'lizenz', true);
    }
    return $message;
    }
    add_shortcode('lizenzen', 'wpb_lit_shortcode');

    Und das gibt einen Absturz wie das von dir vorgeschlagene auch.

    esc_html( get_user_meta(get_current_user_id(), 'lizenz', true));
    <b>..</b> oder <strong>..</strong> geht gar nicht, <br /> Funktioniert.
    Damit könnte man leben, aber seltsam trotzdem.

    Thread-Starter herb1

    (@herb1)

    Hallo,

    ich habe nun die Ausführung für die Felderzeugung in ein Plugin eingesetzt.
    Es wird ein Fehler angezeigt, mit dem ich nichts anfangen kann.

    Fehlermeldung:
    Das Plugin erzeugte 2 Zeichen mit unerwarteter Ausgabe während der Aktivierung. Wenn du „headers already sent“-Hinweise, Probleme mit Syndication-Feeds oder andere Probleme bemerkst, versuche, dieses Plugin zu deaktivieren oder zu entfernen.

    Funktionieren tut es wie vorher in der function.php auf gleicher weise.

    Gibt es hierfür Lösungen?

    Moderator threadi

    (@threadi)

    Ohne den Code für das Plugin zu kennen, kann man nur raten. Möglich wäre:

    • Du hast am Anfang der Datei zusätzliche Zeichen in der Ausgabe die noch vor dem beginnenden PHP-Code stehen.
    • Du hast die Datei nicht mit UTF8 ohne BOM gespeichert. In dem Fall könnte es auch zu solchen Problemen kommen. Lösen musst du das mit dem von dir verwendeten Editor, den ich nicht kenne.
    Thread-Starter herb1

    (@herb1)

    mus noch etwas richtig stellen.

    Ohne esc_attr( ) oder ohne esc_html( ) geht nur Zeilenumbruch <br />,
    an sonsten mit beiden (esc_ ) werden alle html tags mit angezeigt.
    Auch bei der Vorgeschlagenen Variante.

    Moderator threadi

    (@threadi)

    Klar kann man in den escape-Funktionen keinen HTML-Code schreiben. Das ginge eher mit kses.

    Ich weiß aber leider wiedermal nicht worauf du hinaus willst. Wenn du die Ausgabe der Lizenznummer vom Nutzer fett (oder betont) darstellen willst, dann reicht es so (inkl. Anpassungen für WordPress Coding Standards, sonst würde ich sowas hier nicht veröffentlichen):

    function wpb_lit_shortcode(): string {
    // do nothing if user is not logged-in.
    if( ! is_user_logged_in() ) {
    return '';
    }

    // get the lizenz of this user.
    $lizenz = get_user_meta( get_current_user_id(), 'lizenz', true );

    // do nothing if he has no lizenz.
    if( empty( $lizenz ) ) {
    return '';
    }

    // return lizenz.
    return '<strong>' . esc_html( $lizenz ) . '</strong>';
    }
    add_shortcode( 'lizenzen', 'wpb_lit_shortcode' );

    Beachte auch, dass du den Funktionsnamen (derzeit wpb_lit_shortcode) unbedingt noch an dich anpassen solltest. Empfehlung ist den eigenen wp.org-Nutzernamen gefolgt vom Plugin-Slug zu nehmen. Natürlich jeweils ohne Leer- und Sonderzeichen und der Plugin-Slug in englisch.

    Thread-Starter herb1

    (@herb1)

    Super Danke es war UTF8 ohne BOM.

    Was ist ein Plugin-Slug?

    Beachte auch, dass du den Funktionsnamen (derzeit wpb_lit_shortcode) unbedingt noch an dich anpassen solltest. Empfehlung ist den eigenen wp.org-Nutzernamen gefolgt vom Plugin-Slug zu nehmen. Natürlich jeweils ohne Leer- und Sonderzeichen und der Plugin-Slug in englisch.

    Was heist das? Was soll ich ändern? ist doch nur eine Variablenbezeichnung, odre nicht?
    Was oder Wer ist der Slug???

    • Diese Antwort wurde vor 8 Monaten, 3 Wochen von herb1 geändert.
    Moderator threadi

    (@threadi)

    Wenn du schon beginnst Plugins zu entwickeln, auch wenns nur für dich ist, solltest du dir unbedingt das Handbuch dazu anschauen: https://developer.wordpress.org/plugins/

    Die Slugs sind (wie dort auch beschrieben) die eindeutigen Erkennungen an denen man Plugins im Repository identifizieren kann. Das Plugin „Hello World“ hat den Slug „hello-world“, erkennbar an der URL: https://wordpress.org/plugins/hello-world/

Ansicht von 8 Antworten – 16 bis 23 (von insgesamt 23)

Das Thema „Einzelne Profieldaten im Frontend“ ist für neue Antworten geschlossen.