Eigene Kommentare hervorheben

  • Hi,

    bin grad dabei meine comments.php zu renovieren.
    Meine Bisherige basierte auf dem alten classic-Theme.

    Die Neue ist eine wüste Mischung aus der Twenty Ten comments.php, der zugehörigen ergänzten Funktion twentyten_comment in der functions.php und für die Ausgabe des Formulars ein Einschub vom Kubrick-Theme statt dem imho umständlich konfigurierbaren:

    PHP
    <?php comment_form(); ?>

    Klappt auch alles eigentlich so wie gewünscht.

    Um die eigenen Kommentare hervorzuheben habe ich in der functions.php etwas ergänzt bzw. ausgetauscht:

    Normal sieht dieser Teil ja so aus:

    PHP
    function twentyten_comment( $comment, $args, $depth ) {
        $GLOBALS['comment'] = $comment;
        switch ( $comment->comment_type ) :
            case '' :
        ?>
        <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
            <div id="comment-<?php comment_ID(); ?>">

    Statt <?php comment_class(); ?> hebe ich halt class="<?php echo $class; ?>" reingewurstet.

    Klappt eigentlich auch. Die entsprechenden Klassen werden ganz brav in Abhängigkeit von Autor oder Gast ausgegeben und ich könnte entsprechend gestalten.

    Jetzt habe ich aber in der Wp-Doku unter comment_class folgendes gelesen:

    Zitat

    user_id: if the comment was made by a registered user, then adds class "byuser" and "comment-author-" + the user_nicename sanitized (i.e. spaces removed). Also, if the comment is by the original author of the post, the class "bypostauthor" is added.

    Es ist mir leider nicht gelungen das so einzubauen, um die Klasse bypostauthor ausgegeben zu bekommen.

    Kann mir evtl. jemand auf die Sprünge helfen?
    Meine PHP-Kenntnisse sind leider nur rudimentär. :-)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Die Klasse bypostauthor wird automatisch hinzugefügt. Demnach dürfte es reichen Deine CSS Anweisungen in die style.css an der entsprechenden Stelle (ca. Zeile 890) einzubauen.

    Code
    .commentlist .bypostauthor {
        background-color:#8DBDD8;
    }
  • Hi infected,

    danke für deine Antwort. :-)

    Die Klasse bypostauthor wird automatisch hinzugefügt. Demnach dürfte es reichen Deine CSS Anweisungen in die style.css an der entsprechenden Stelle (ca. Zeile 890) einzubauen.

    Code
    .commentlist .bypostauthor {
        background-color:#8DBDD8;
    }

    Leider wird sie bei mir nicht automatisch hinzugefügt, aus welchen Gründen auch immer.
    Mein Theme ist übrigens selbst entwickelt.

    Ich hab die function.php jetzt noch mal zurückgeswitcht (vor Einschub if/else autor/gast) und hochgeladen.
    Hier kannst du dir mit Firebug angucken welche Klassen generiert werden.

  • Kann es sein, dass das Theme schon ein paar Tage mehr auf dem Buckel hat? Das Hinzufügen der Klassen .byuser und .bypostauthor wurde nämlich mit WP 2.7 eingeführt. Hierzu findet sich ein passender Artikel im Codex: http://codex.wordpress.org/Migrating_Plug…or_comments.php

    Versuche ansonsten mal diesen Weg: http://www.guido-muehlwitz.de/2010/06/kommen…rs-hervorheben/

    Das Theme ist von 08/09 hat also WP 2.7 genutzt. Dateien dieses Themes haben wohl Dateien des classic-Themes genutzt (comment.php z.B.).
    Die comment.php hab ich modernisiert.

    Jetzt durchforste ich erst mal mein Theme und vergleiche die Dateien mit den Dateien des neuen Themes (Twenty Ten).
    Vielleicht finde ich noch etwas zum Modernisieren.
    Ansonsten probiere ich mal deinen anderen Link.

    Vielen Dank erst mal für deine Hilfe. :-)
    Ich meld mich dann bei Bedarf noch mal.

  • Was mich immer noch ein bisschen verwirrt ist die Aussage

    Statt <?php comment_class(); ?> hebe ich halt class="<?php echo $class; ?>" reingewurstet.

    Wenn Du denn Deinen eigenen Code entfernst und stattdessen wie in diesem Beispiel mit

    PHP
    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">

    und den von mir genannten CSS Angaben arbeitest, sollte es doch eigentlich funktionieren. Oder habe ich da jetzt einen Denkfehler?!

    Die entsprechende Klasse brauchst Du ja eigentlich nicht mehr selbstständig zu ermitteln, da dies seit 2.7 durch die Funktion get_comment_class in der Datei /wp-includes/comment-template.php gemacht wird.

  • Was mich immer noch ein bisschen verwirrt ist die Aussage

    ich bin noch viel verwirrter. :-?

    Jetzt ist diese Zeile wieder drin:

    PHP
    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">

    Es wird nun im Quelltext immer hübsch nacheinander für li das ausgegeben:

    PHP
    Erster Kommentar: class="comment even thread-even depth-1"
    
    
    Zweiter Kommentar: class="comment odd alt thread-odd thread-alt depth-1"
    
    
    Dritter Kommentar: class="comment even thread-even depth-1"

    Die Funktion get_comment_class befindet sich in der von dir genannten Datei.

    Den Link zu comment_class habe ich mir auch schon angeschaut und dort auch die Klasse .bypostauthor entdeckt.
    Nur wird diese Klasse auf dem Weg in den Browser irgendwo gefressen und ich kann mir nicht erklären wo.

    Als nächstes deaktiviere ich mal testweise alle Plugins und schaue was passiert.

    Danach böte sich noch die Möglichkeit an mein Theme völlig neu auf der Basis von "Twenty ten" zu entwickeln [size=8][COLOR=Silver](Herr, bitte lass diesen Kelch an mir vorübergehn! :mrgreen: )[/COLOR][/SIZE]

    [size=10][COLOR=DarkSlateGray][COLOR=Black]Aber zuerst das mit den Plugins.
    Melde mich dann noch mal. [/COLOR]
    [/COLOR][/SIZE]

  • Öhm... Geht doch?! Deine Kommentare werden anders dargestellt.

    EDIT: Ach verdammt, hab den falschen Link genommen (den aus Deiner Signatur)... Dort verwendest Du die eingangs angesprochene Lösung?!

    Einmal editiert, zuletzt von mfitzen (5. Oktober 2010 um 15:57)

  • Öhm... Geht doch?! Deine Kommentare werden anders dargestellt.

    EDIT: Ach verdammt, hab den falschen Link genommen (den aus Deiner Signatur)... Aber das ist doch das gleiche Theme?!

    ja, du hast recht, es ist das gleiche Theme. :-)

    Der helmschrot-mumpe.de ist mein Testblog in dem ich alles erst mal ausprobiere, bevor ich es auf den echten Blog loslasse. :wink:

    Deaktivieren der Plugins brachte auch nix.

    Wenn sonst keine Idee mehr auftaucht bleiben mir zwei Möglichkeiten:
    Alles so lassen wie es war, ohne die comments.php neu aufzubauen oder ich nehm den Kelch und bau alles neu auf.

  • Just for the records...

    Hab mir das Theme mal in meinem Testblog angesehen und dort funktioniert es einwandfrei. Die Ursache für den "Fehler" sollte daher (m.M.n.) auf dem Server/in der WP-Installation des Threaderstellers zu suchen sein (eventuell ein Plugin?).

  • Just for the records...

    Hab mir das Theme mal in meinem Testblog angesehen und dort funktioniert es einwandfrei. Die Ursache für den "Fehler" sollte daher (m.M.n.) auf dem Server/in der WP-Installation des Threaderstellers zu suchen sein (eventuell ein Plugin?).

    jau, ich werd den Testblog löschen, die DB löschen und über Exportieren/importieren alles neu machen.

    Vermute dank der Hilfe von infected das Get Recent Comments der Bösewicht ist.
    Näheres Morgen nach Neuinstallation. :wink:

  • Es hat mir ja jetzt keine Ruhe gelassen, daher eine ganz simple Frage: Wenn Du den Kommentar verfasst, bist Du dann angemeldet, oder trägst Du Deine Daten ins Kommentarformular ein? Genau dann, kann ich den "Fehler" nämlich reproduzieren. Das würde bedeuten, dass die E-Mailadresse die im Kommentar eingetragen wurde, nicht mit der E-Mailadresse des Autors abgeglichen wird (was in gewisser Weise auch Sinn macht).

    Einmal editiert, zuletzt von mfitzen (5. Oktober 2010 um 18:14)

  • Das würde bedeuten, dass die E-Mailadresse die im Kommentar eingetragen wurde, nicht mit der E-Mailadresse des Autors abgeglichen wird (was in gewisser Weise auch Sinn macht).

    mmmh, ja stimmt, das wäre ne Erklärung.
    Die alten Kommentare von mir haben kein .bypostauthor bekommen.

    Jetzt habe ich testweise mal angemeldet einen Kommentar abgegeben und da werden dann diese Klassen ausgegeben:

    PHP
    comment byuser comment-author-helmschrot bypostauthor odd alt thread-odd thread-alt depth-1

    Die gewünschte Klasse erscheint nun neben anderen imho teilweise ziemlich überflüssigen Klassen.
    comment-author-helmschrot finde ich überflüssig.
    Was die Klasse byuser da verloren hat erschließt sich mir leider auch nicht so ganz. Die würde ich instinktiv eher bei Kommentaren eines nicht angemeldeten Besuchers vermuten.

    Das meine alten Kommentare diese Klasse nicht bekommen haben finde ich suboptimal, ja sogar ziemlich ärgerlich.
    Da haben wir beide wohl nicht mit gerechnet, sonst wären wir viel früher drauf gekommen.

    Das heißt ja im Grunde ich kann mir das Modernisieren der comments.php von der Backe putzen, weil dann die alten Kommentare von mir nicht hervorgehoben sind. :twisted:

    Ich würde das sogar als Fehler innerhalb von WP bezeichnen.
    Ob dieser Effekt von WP so gewollt ist würde mich mal interessieren.
    Vielleicht sollte man denen mal ne Mail deswegen schicken.

    Danke nochmal für deine tatkräftige Unterstützung. :)

    Einmal editiert, zuletzt von koslowski (6. Oktober 2010 um 10:43)

  • Zitat

    Ob dieser Effekt von WP so gewollt ist würde mich mal interessieren.
    Vielleicht sollte man denen mal ne Mail deswegen schicken.

    Es scheint so, als wäre das beabsichtigt. Habe dazu mal ein Ticket eröffnet, welches aber mittlerweile wieder geschlossen wurde: http://core.trac.wordpress.org/ticket/15050

    Und wie in meinem vorherigen Beitrag gesagt, macht dieses Verhalten in meinen Augen auch Sinn. Jeder, der Deine E-Mailadresse kennt, könnte sich nämlich dann als Author des entsprechenden Beitrags ausgeben. Das dürfte auch nicht in Deinem Interesse sein...


  • Und wie in meinem vorherigen Beitrag gesagt, macht dieses Verhalten in meinen Augen auch Sinn. Jeder, der Deine E-Mailadresse kennt, könnte sich nämlich dann als Author des entsprechenden Beitrags ausgeben. Das dürfte auch nicht in Deinem Interesse sein...

    okay, gut zu wissen. :smile:

    Dann wird halt nicht modernisiert, was ja imho auch nicht so schlimm ist.

  • Oder Du meldest Dich zum Kommentieren halt immer an, wenn Du unbedingt mit der Klasse bypostauthor hantieren möchtest...

    naja, ich bin ja eigentlich immer angemeldet wenn ich kommentiere.
    Das nützt mir für meine alten Kommentare aber leider nichts mehr.

    Wenn ich mal für jemand einen neuen Blog aufsetze kommt natürlich die Modernisierung der comment.php zum Tragen. :smile:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!