• Zur Hauptnavigation springen
  • Skip to main content
  • Zur Fußzeile springen

Gärtner Webentwicklung

Maßgeschneiderte Web-Lösungen für Ihre Bedürfnisse

  • Über mich
  • WordPress Mentoring
  • Ressourcen
    • Resource efficient websites
    • Empfohlene Plugins
    • Empfohlene Hilfsmittel
    • Empfohlene Hoster
    • Alternativen zu WordPress
  • Artikel
    • Technische Begriffe einfach erklärt
    • Code-Schnipsel
    • Tutorials

Custom Comment Types

3. April 2021 von Sebastian Gärtner Kommentar verfassen

WordPress wäre nicht DAS erfolgreiche/erfolgreichste CMS dass wir aktuell haben, wenn es nicht die Möglichkeit gäbe es auf die Daten anzupassen, die es im Projekt wirklich gibt.

Dafür relevant sind Custom Post Types / Benutzerspezifische Inhaltstypen und Custom Fields / Benutzerspezifische Felder.
In WordPress können aber auch Kommentare benutzerspezifisch sein.

Tatsächlich gibt es bereits mehrere Kommentartypen:

  • Kommentare (comment_type = 'comment' – in der Datenbank leeres Feld, da Standard )
  • Pingback ( comment_type = 'pingback' )
  • Trackback ( comment_type = 'trackback' )

Für Custom Post Types gibt es Tools im WordPress-Kern um sie anzulegen. Noch leichter geht es mit Plugins oder Libraries wie Extended CPT mit dem auch Custom Taxonomies / Benutzerspezifische Taxonomien/Kategorien angelegt werden können.

Custom Fields sind aufwändiger – deshalb ist es hier sehr angenehm Plugins/Libraries zu verwenden. Ich komme bisher immer wieder auf Advanced Custom Fields zurück, auch, wenn ich mich hin und wieder nach Alternativen umsehe.

Für Custom Comment Types gibt es solche Tools nicht. Tatsächlich ist dieses Feature im Kern kaum ausgestaltet und ein Versuch das Handling auszubauen ist im Ansatz stecken geblieben. Ist wohl einfach zu selten benötigt. Aber es gibt genug um Custom Comment Types zu verwenden!

Custom Comment Types verwenden

Erste Einsicht vorne weg:
Custom Comment Types sind im Endeffekt nur ein String in der „comment_type“-Spalte von Kommentaren. Das ist der komplette technische Unterschied zu den vorhandenen Kommentar-Typen. Der Rest ist, was du drauß machst.

Das ist ein SQL-Export eines Datensatzes aus dem Projekt in dem ich mit Custom Comment Types arbeite. Unser erster Comment-Type ist „reaction“. Hinzugekommen ist inzwischen noch „donation“ und natürlich die WordPress-Eigenen Kommentare mit leerem comment_type in der Datenbank.

INSERT INTO kas_wp_comments (comment_ID, comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_karma, comment_approved, comment_agent, comment_type, comment_parent, user_id) VALUES (3756, 5212, 'Sebastian Gaertner', 'mail@gaertner-webentwicklung.de', 'https://gaertner-webentwicklung.de', '172.17.0.1', '2021-04-03 15:56:08', '2021-04-03 13:56:08', '', 0, '1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36', 'reaction', 0, 18);
Code-Sprache: SQL (Structured Query Language) (sql)

Darin enthalten sind auch die klassischen Felder eines Kommentars:

comment_ID - Die Kommentar ID comment_post_ID - ID des Posts/Objekts auf das er sich bezieht comment_author - Infos über den:die Autor:in des Kommentars comment_author_email comment_author_url comment_author_IP comment_date - Datum in der Zeitzone der Seite comment_date_gmt - nochmal in GMT comment_content - der Inhalt des Kommentars comment_karma - aktuell von WP nicht verwendet. Kann genutzt werden um z. B. upvotes oder sonstige Bewertungen zu handhaben. Ist aber nicht zukunftssicher comment_approved - sozusagen der "post_status" des Kommentars comment_agent comment_type - wie oben beschrieben der "post_type" des Kommentars. Den wir genutzt haben um eigene Typen anzulegen comment_parent - für erschachtelte Kommentarhierarchien user_id - falls die Person eingeloggt war, die User-ID

WordPress Core ist zwar an sich bereit für Custom Comment Types, unterstützt es aber nur rudimentär. Ich habe das gelöst, indem ich in der Funktion comment_form(), die das Kommentar-Formular anzeigt, ein hidden Formularfeld eingefügt habe.

<input type="hidden" name="comment_type" value="reaction">
Code-Sprache: HTML, XML (xml)

Das wird mir mit dem Kommentar mit geschickt und kann dort ausgewertet werden.

add_action( 'comment_post', 'save_reaction_comment_meta_data' ); function save_reaction_comment_meta_data( $comment_id ) { if ( ! isset( $_POST['comment_type'] ) || ! in_array( $_POST['comment_type'], [ 'reaction' ] ) ) { return; } if ( ! isset( $_POST['reaction'] ) ) { return; } $commentarr = get_comment( $comment_id, ARRAY_A ); $commentarr['comment_type'] = sanitize_key( $_POST['comment_type'] ); $commentarr['comment_meta'] = [ 'reaction' => sanitize_key( $_POST['reaction'] ), ]; wp_update_comment( $commentarr ); }
Code-Sprache: PHP (php)

In dem Beispiel speichere ich Meta-Daten an den Kommentar. Wir verwenden Kommentare um „Reactions“ abzubilden. Also sowas wie Likes/“Gefällt mir“ und die Meta-Info „reaction“ enthält die Info ob es „Daumen hoch“, „Daumen runter“ etc. ist.

Kommentare können wie sonst auch üblich via wp_list_comments() geladen werden. In den Parametern der Funktion kann einfach ein type definiert werden.

Natürlich werden die Kommentare auch im Backend normal gelistet.

Vielleicht bietet sich auch für dein Projekt ein Custom Comment Type an.

Kategorie: Tutorials

Leser-Interaktionen

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Vorheriger Beitrag: « Facebook Messenger Chatbot anlegen
Nächster Beitrag: API einfach erklärt »
  • Kontakt
  • Datenschutzerklärung