Eine Leseempfehlung vorweg: „Yes, Comments Are Still Relevant, But We Need a Better System“ von Justin Tadlock auf WPTavern!

Soziale Netzwerke haben die Art wie wir kommunizieren drastisch verändert. Wir reagieren selten mit Text, statt dessen liken, re-tweeten, sharen und faven wir was das Zeug hält. Und wenn wir mit Text reagieren, hat dieser spätestens seit Twitter, einen anderen Stellenwert. Ein Kommentar ist nicht länger ein Stück Text unter einem Artikel, ein Kommentar steht für sich alleine und wird durch die Plattform in den richtigen Kontext gesetzt, abhängig vom Einstiegspunkt des lesenden.

Mein Tweet, über meine Timeline, mit Depones Antwort
Daniels Antwort über seine Timeline, mit meinem Tweet als „Reply-Context“.

Die IndieWeb Community nennt das einen Reply-Context.

Diese Art der Darstellung und Handhabung von Reaktionen ist auch in dezentralen Netzwerken sehr populär. Mastodon ähnelt sehr, dem von Twitter gekauften Tweetdeck und imitiert auch dessen Darstellung. Die IndieWeb Bewegung geht sogar noch einen Schritt weiter und schafft mit Webmentions eine Möglichkeit über Blog-Posts dezentral zu kommentieren.

Die Kommentar-Funktion von WordPress ist dagegen bald 20 Jahre alt und dementsprechend antiquiert.

Zeit das zu ändern!?!

Custom Post Type

Ich arbeite seit knapp 15 Jahren daran, WordPress im IndieWeb und Fediverse zu verankern. Das große Problem ist dabei immer wieder die Persistenz und die Darstellung von Reaktionen. Ich habe mir viele Gedanken gemacht, wie man das Problem beheben und WordPress‘ Kommentar System modernisieren könnte, und ende immer an dem Punkt, wo ich versuche die Custom Post Type – Funktionalität für Kommentare nachzubauen.

Aber warum? Wenn ich eh alles nachbauen müsste, wäre es doch viel sinnvoller direkt Post-Types zu benutzen.

register_post_type( 'comment' );Code-Sprache: JavaScript (javascript)

Aktuell bildet WordPress Posts, Pages, Attachments, Revisions, Navigation Menus, Custom CSS und Changesets über Custom Post Types ab… Warum also nicht auch Kommentare und andere Reaktionen?

Durch die Gleichsetzung der Datenstruktur von Posts und Comments, lassen sich diese einheitlich und dadurch einfacher verarbeiten und über z.B. APIs ausgeben. Gerade ActivityPub macht, wie Twitter, keinen Unterschied zwischen Kommentar, Antwort, Like, Boost oder initialem Text.

Die (Custom-)Post Tabelle bietet über post_parent schon jetzt die Möglichkeit komplexe Zusammenhänge wie z.B. auch Threaded-Comments abzubilden. Über den post_status ließen sich außerdem Kommentar-Status sowie eine Spam-Behandlung realisieren und commentmeta kann komplett in postmeta aufgehen.

Neben den klassichen Kommentaren lassen sich aber auch andere Reaktionen umsetzen.

Like, Share, …

Mit Post-Formats hat WordPress ein interessantes Konstrukt um Posts (über eine Taxonomy) weiter zu klassifizieren. Was für Posts das aside, gallery, link oder video Format ist, könnte für Comments das Like, Share oder Bookmark Format sein.

Themes könnten ihren Support wie folgt definieren:

add_theme_support( 'comment-formats', array( 'like', 'share', 'bookmark' ) );Code-Sprache: PHP (php)

Und Plugins, wie Webmention oder ActicityPub, könnten neue Formate wie folgt registrieren:

register_comment_format( string $comment_format, array|string $args = array() )Code-Sprache: PHP (php)

Fazit

Technisch spricht also nichts dagegen, Custom Post Types auch für Kommentare zu benutzen, man muss eigentlich nur noch alle Kommentar-Funktionen und -Klassen anpassen und fertig!

…und direkt über wpdb wird sicherlich eh niemand auf die Kommentar-Tabelle zugreifen! 😉

Spaß beiseite… Ich mag die Idee wirklich, hab aber bisher noch keinen ähnlichen Vorschlag im Trac gefunden… Ob das ein Zeichen ist?

33 Kommentare zu “Custom Post Type: Comment

  1. Ja bitte, @pfefferle !
    Diese Unterteilung zwischen Posts und Comments hat mich bei WP schon immer gestört. Der Code zur Darstellung ist [bei mir] inzwischen auch nur noch Kraut und Rüben. Es zerbröselt auch gerne mal was bei Updates und ich bekomme es erst später mit und darf dann wieder los rennen und Live Debugging machen. Das ist halt der Preis für diese sehr individuelle Lösung für weitere Comment Types.
    Ich vermisse ebenfalls schmerzlich dass eben keine Bilder oder generell Attachments in Kommentaren eingebunden werden können. Das wirft zwar wieder neue Fragen auf, doch bei der Geschwindigkeit mit der sich WP weiter entwickelt kann man ja schon froh sein dass überhaupt schon Emoji funktionieren.
    Manchmal.
    Also im Titel zum Beispiel eher noch nicht – da fallen einige IndieWeb Sachen dann auf die Nase 😛

    • Wir haben für Webmentions 5.0 versucht Custom Post Types für Comments zu adaptieren, aber ist am Schluss doch wieder „nur“ ein Hack, weil die Ausgabe/das Theme es natürlich nicht unterstützt.

      Das mit den Bildern is wild… Ich bin mir nicht sicher ob ich will, dass Besucher hier Bilder hoch laden können sollen 😳

      • Man kann das ja wie im Fediverse machen. Da kommen Bilder von der Primärquelle, werden aber gecached. Daher sind alte Bilder auch oft tot, weil es halt wieder aus dem Cache geworden wurde und es ggf. auf der Primärquelle nicht mehr vorgehalten wird.
        Copyright wirst du denken? Ja nü, wie läuft es denn sonst wo – von Twitter bis Discord? Bei allen muss man nur die URL kennen und kann das Zeug einbinden oder verbreiten wie man lustig ist. (Auch aus PMs *hust)

  2. Das Kommentarsystem ist auf jeden Fall zu starr und beim Versuch es zu erweitern stößt man regelmäßig an unsinnige Grenzen.

    Ein Umbau auf Posts wäre interessant, aber die Migration würde mir Sorgen machen. Daher glaube ich nicht, dass WordPress das je machen wird. Die Angst vor dem Aufwand wird jeden Entwickler abschrecken …

  3. genau das ist eig. ein stützender punkt zur aussage (dem wirk. wichtigen sinnieren über den reply context) weil genau darüber im indie-context nie wirklich nachgedacht wurde (wenn man so will sind plattformen nix anderes als ‚monadische‘ reply-kontexte, die aber entschieden sind)


  4. Bin ich voll dafür.

    Was die Migration angeht:

    Es bräuchte einen ‚add_theme_support( ‚post_type_comment‘ );‘. Wenn dieser gesetzt ist, greift das Template auf die entsprechenden Funktionen des Plugins zu, um die Kommentare aufzulisten und das Formular anzuzeigen. Wenn dieser nicht gesetzt ist, muss das Plugin per Filter ‚get_comments_number‘ die Anzahl setzen und per Filter ‚comments_array‘ die Posts in die Funktion ‚comments_template‘ bekommen. -Also theoretisch…

    Ich habe da so ein paar Zeilen, die für einen Post (mehrsprachig, Polylang) alle Kommentare (also auch von anderen Post-IDs) anzeigt. Das klappt ganz gut.

Schreibe einen Kommentar

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