• Gelöst mvittel

    (@mvittel)


    Hallo zusammen,

    leider verzweifle ich. Ich versuche, wenn man auf die Website geht, im Feld (Tabelle) oben rechts „Letzte Kommentare:“ die letzten Kommentare anzuzeigen, bedauerlicherweise klappt es nicht. Ich habe unter anderem den Code aus der Widget-Gruppe probiert, es wird dann auch angezeigt. Wenn ich einen Testeintrag mache, wird der Eintrag nicht angezeigt. Also aktualisiert es sich enttäuschenderweise nicht.

    Hat eventuell einer den Code, den man dafür benötigt?
    3 Einträge würden genügen:
    Poster zu Thema am Datum
    Im Idealfall noch eine Textanzeige über 60 Zeichen.

    https://www.gdz.bplaced.net/test-seite/ Hier ist so ein Eintrag: Neueste Kommentare, welchen ich gerne oben im Kasten rechts haben möchte.

    Vielen Dank und ich hoffe, dass ich es einigermaßen begreiflich beschreiben konnte.

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 7 Antworten – 16 bis 22 (von insgesamt 22)
  • Es sollen nur die letzten 3 Einträge angezeigt werden.

    Ein guter Moment, um die WordPress Dokumentation zu Rate zu ziehen.

    Bei der Beschreibung von get_comments() erfährst du, dass der Funktion Argumente übergeben werden können. Das haben wir ja auch schon gemach:

    $args = [
    'date_query' => [
    'after' => '4 weeks ago',
    'before' => 'tomorrow',
    'inclusive' => true,
    ],
    ];

    return get_comments($args);

    Welche Argumente du verwenden kannst, wird in der Dokumentation für WP_Comment_Query aufgeführt. Unter anderem:

    number int

    Maximum number of comments to retrieve.
    Default empty (no limit).

    Vorgabewert ist also unbegrenzt. Mit 'number' => 3, beschränkst du die Ausgabe auf die 3 neuesten Kommentare.

    Die Textlänge, was die Person geschrieben hat, sollte ca. 60 Zeichen haben.

    Mit der WordPress-Funktion wp_trim_words() kannst du die Länge der Ausgabe begrenzen. Ich halte hier eine Begrenzung auf Worte für sinnvoller, als Text mitten im Wort abzuschneiden (was mit substr() möglich wäre).
    Kommst du alleine darauf, wie du das einsetzt?

    Nach zu kommt der Name der Seite, da fehlt die Verlinkung.

    Richtig, so hattest du das in deiner Frage auch gewünscht:

    Screenshot

    Von Link steht da nichts. 🙂

    Kannst du aber natürlich hinzufügen. Statt

    . get_the_title($comment->comment_post_ID)

    fügst du folgendes ein:

    . '<a href="' . esc_url( get_permalink( $comment->comment_post_ID ) )
    . get_the_title($comment->comment_post_ID)
    . '</a>

    Daran siehst du, wie wichtig es ist, Aufgaben sehr präzise zu stellen.

    Ich denke, du solltest jetzt alleine weiterkommen.

    Thread-Starter mvittel

    (@mvittel)

    Das mit der Kürzung der Texte hat geklappt.
    Die Menge der Einträge leider noch nicht.
    Ja, das meinte ich, mit Verlinkung, zum Draufklicken, dass man zu dem Eintrag kommt.

    Thread-Starter mvittel

    (@mvittel)

    Ein paar Sachen habe ich nun verstanden, doch leider hänge ich wieder fest.
    Das was derzeitig passiert, ist: Es werden die letzten 3 Einträge von jedem Artikel, der in einem bestimmten Zeitraum geschrieben wurden.
    Richtig würde aber sein, nur die letzten 3 Einträge, Artikel unabhängig. (Damit sollte die Liste wesentlich kürzer werden und bis auf 3 sichtbare Einträge begrenzt sein.)

    Meine Vermutung ist, dass in dem Bereich noch ein Teil hineinmuss, damit das oben beschriebene passiert. Es wird hier ja der Zeitraum erfasst und die Menge der Einträge.

    function get_latest_comments() {
    $args = [
    'date_query' => [
    'after' => '4 weeks ago',
    'before' => 'tomorrow',
    'inclusive' => true,
    'number' => 3,
    ],
    ];

    Ich habe gesucht, aber finde da nicht das, was wohl benötigt wird.

    Um die Verlinkung zu machen, habe ich den Teil eingesetzt:

    . '<a href="' . esc_url( get_permalink( $comment->comment_post_ID ) )
    . get_the_title($comment->comment_post_ID)
    . '</a>

    Dieses führt dann zu einem Fatalerror und die erste Zeile wird als Ursache genannt:
    Fehler: Parse error: syntax error, unexpected token „>“ in….

    Der Link wäre syntaktisch so richtig:

    . '<a href="' . esc_url( get_permalink( $comment->comment_post_ID ) ) . '">'
    . get_the_title($comment->comment_post_ID)
    . '</a>'

    Was die Reihenfolge der Kommentare angeht, müsstest Du bitte nochmal im Handbuch schauen: https://developer.wordpress.org/reference/classes/wp_comment_query/__construct/ – da gibts ein orderby und order als Parameter.

    Thread-Starter mvittel

    (@mvittel)

    Das war ein Fehler von mir, die Reihenfolge passt.
    Habe nur immer noch das Problem, dass mir 20 Einträge angezeigt werden. Das sollte ja begrenzt sein auf 3.

    function get_latest_comments() {
    $args = [
    'date_query' => [
    'after' => '2 weeks ago',
    'before' => 'tomorrow',
    'inclusive' => true,
    'number' => 3,
    ],
    ];
    function get_latest_comments() {
    $args = [
    'date_query' => [
    'after' => '2 weeks ago',
    'before' => 'tomorrow',
    'inclusive' => true,
    ],
    'number' => 3,
    ];
    Thread-Starter mvittel

    (@mvittel)

    Vielen Dank, ihr seid Top. Das funktioniert jetzt, wie ich es gewünscht hatte. Nun kann ich mich mit dem nächsten Thema beschäftigen und den Header-Bereich ändern, wie ihr es bereits gesagt habt.
    Danke nochmals. Werde das Ticket jetzt schließen.

Ansicht von 7 Antworten – 16 bis 22 (von insgesamt 22)