Seit WP 2.7 Kommentare individuell gestalten-Avatar und mehr

default gravatar ändern ab WP 2.7
default gravatar ändern ab WP 2.7

Du magst die Ausgabe der Kommentare in WP 2.7 ändern. Sei es nur, dass Du den Satz „Dein Kommentar wird moderiert“ ändern magst oder das „admin says“ oder den default Avatar oder ein div wo brauchst oder die Kommentare zählen magst. Was auch immer Du verändern magst, Du brauchst dafür eine eigene Funktion in der functions.php.

Ich erkläre hier die Funktion zur Änderung der Kommentare anhand mehrere Beispiele. Du brauchst dafür nicht PHP können, bloß Dich trauen und bei Fragen einfach per Kommentar fragen, dann haben viele was davon.

Achtung: vorher die functions.php und die comments.php des verwendeten WordPress Themes sichern!

In eigener Sache:

Ich erkläre Code für nicht-PHPler, (Programmierer wissen sowieso was dies bedeutet) daher übersetz ich den Code fast wortwörtlich, damit man verstehen kann was was erzeugt, macht, bewirkt. Bitte keine E-Mails wo man mich aufmerksam macht, dass diese Sätze kein korrektes Deutsch sind ;)

Kommentare ändern ==>Functions.php

Ich stell hier die Funktion einfach mal vor, dann geh ich unterhalb Punkt für Punkt durch.


/*--eigene kommentare---*/
wp_list_comments(array('callback' => 'mts_comment'));

function mts_comment($comment, $args, $depth) {
       $GLOBALS['comment'] = $comment;
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID( ); ?>">


<span <?php $post = get_post($post_id);
if($comment->user_id === $post->post_author) {
echo 'class="mine"';
} else { echo 'class="you"'; 
} echo'>';
 echo get_avatar( $comment, $size = '45', $default ='absoluter_url_pfad_zum_avatar' ); ?>
</span>

<h4>
<?php comment_author_link( ); ?>
<span class="meta"><?php comment_time( ); ?> on <?php
comment_date( ); ?> | <a href="#comment-<?php comment_ID( ); ?>">#</a>
| <?php echo comment_reply_link(array('depth' => $depth, 'max_depth'
=> $args['depth'])) ?><?php edit_comment_link( __( 'e' ),
'&nbsp;|&nbsp;',''); ?></span>
</h4>

<?php comment_text( ); ?>

<?php
}


Funktion braucht einen Namen und Argumente

/*--eigene kommentare---*/
wp_list_comments(array('callback' => 'mts_comment'));

function mts_comment($comment, $args, $depth) {
       $GLOBALS['comment'] = $comment;
?>

Alles zwischen Schrägstrich und Stern ist ein Kommentar. Im Laufe der Zeit sammeln sich viele Sachen in der functions.php an und so findet man auf einen Blick die jeweils benötigte. Kommentare sind wichtig und lieber mal einen zuviel als zuwenig.

wp_list_comments array etc das sind alles wichtige Angaben für PHP. Die Programmierer wissen was dies bedeutet für alle Nicht-PHPler sei gesagt, da darf man auch kein Koma oder eine Klammer vergessen, das nimmt einem PHP mit Fehlermeldungen krumm.

mts_comment ist der Name. Ich empfehle immer aussagekräftige Namen, und nutzt man sein Namenskürzel davor, weiß man auch nach Monaten, dass man dies selber getippt hat.

Die CSS class innerhalb der li ändern

Folgendes gibt von WP vordefinierte css classes aus. Magst Du da andere haben, dann kannst Du dies einfach ändern indem Du:


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

z.B.: so veränderst:


<li class="mycommentsclass"  id="comment-<?php comment_ID( ); ?>">


Gut ob dies sinnvoll ist sei dahingestellt, aber so geht es.

Autor Avatar anders darstellen und default Avatar ändern

Beim Autor des Artikels kommt der Avatar in ein span mit der class mine, beim User in ein span mit der class you und außerdem wird der default Avatar durch einen eigenen ersetzt.

<span <?php $post = get_post($post_id);
if($comment->user_id === $post->post_author) {
echo 'class="mine"';
} else { echo 'class="you"'; 
} echo'>';
 echo get_avatar( $comment, $size = '45', $default ='absoluter_url_pfad_zum_avatar' ); ?>
</span>

Zuerst die ID des Artikels holen (get_post post_id);
Abfragen: Wenn bei dem Kommentar die user_id, die des Artikel Autors(post author) ist, dann gib (echo) die class mine zurück, sonst die class you.
Außerdem gib Avatare zurück (echo get_avatar) und zwar für Kommentare,($comment) in der Größe ($size) 45px und der default Avatar ($default) den findest Du bei (absoluter Pfad zum Bild).

Nur den default Avatar ändern


<?php  echo get_avatar( $comment, $size = '45', $default ='absoluter_url_pfad_zum_avatar' ); ?>


Avatar ändern, Avatar für Autor in ein eigenes span, Kommentartext in ein div, Kommentar-Name zwischen h5,Edit Link am Ende des Kommentars


/*--eigene kommentare---*/
wp_list_comments(array('callback' => 'mts_comment'));

function mts_comment($comment, $args, $depth) {
       $GLOBALS['comment'] = $comment;
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID( ); ?>">


<span <?php $post = get_post($post_id);
if($comment->user_id === $post->post_author) {
echo 'class="mine"';
} else { echo 'class="you"'; 
} echo'>';
 echo get_avatar( $comment, $size = '45', $default ='absoluter_url_pfad_zum_avatar' ); ?>
</span>

<h5>
<?php comment_author_link( ); ?>
<span class="meta"><?php comment_time( ); ?> on <?php
comment_date( ); ?> | <a href="#comment-<?php comment_ID( ); ?>">#</a>
| <?php echo comment_reply_link(array('depth' => $depth, 'max_depth'
=> $args['depth'])) ?></span>
</h5>

<div class="commtext">
<?php comment_text( ); ?>
</div>

<?php edit_comment_link( __( 'e' ),'&nbsp;|&nbsp;',''); ?>
<?php
}


WordPress und die neue Funktion bekannt machen==>comments.php

Suche in der comments.php nach wp_list_comments und ändere dies so ab:

<?php wp_list_comments('type=comment&callback=mts_comment'); ?>


Für alle Kommentare-nicht Pings /Trackbacks nutze nun die Angaben von mts_comment.

Nachlesen:

12

12 Beiträge zu “Seit WP 2.7 Kommentare individuell gestalten-Avatar und mehr

  1. Kommentar Autor
    Sven
    Kommentar

    Wenn es dir zu unübersichtlich ist, kopier es doch einfach in ’nen Texteditor deiner Wahl. Ob man nun hoch und runter scrollt, oder zwischen zwei Windows tabbt, ist doch gleicher Aufwand.

    Ich fand die Erläuterungen jedenfalls sehr hilfreich.

  2. Kommentar Autor
    Robert Hartl
    Kommentar

    Sehe ich richtig, dass sich WP nun anmaßt, die Kommentarausgabe nicht mehr über das Theme sondern nach festen, eigenen Regeln auszugeben?
    Ich muss als zwingend jedes Theme für 2.7 mit der ganzen functions-Blabla ausstatten, damit die Kommentare so aussehen wie vorher? Ohje.

  3. Kommentar Autor
    Monika
    Kommentar

    hi Robert, nein, Du kannst es wie bisher machen,
    dann verzichtest Du auf die threaded Kommentare und auf die Umblätterei bei sehr vielen Kommentaren.

    ich selber nutze auch keine threaded Kommentare und die zig Seiten DC mit umgeblätterten Kommentaren mag ich auch nicht mehr- das hatte ich mal- daraufhin landeten diese Seiten alle in diesem *anderen Index*, den es so nicht mehr gibt, obwohl er da ist- du verstehst dieses Paradoxon sicher

    lg

  4. Kommentar Autor
    Robert Hartl
    Kommentar

    Danke Monika, das erleichtert mit das Updaten doch deutlich. Ansonsten muss man am besten mit der robots.txt (Google erlaubt ja Wildcards) die eigenen Kommentarseiten für Bots sperren, um DC zu vermeiden.

  5. Kommentar Autor
    Jared
    Kommentar

    Hallo Monika,

    ich liebe die ganzen Tutorials auf texto wirklich sehr ;-) und surfe immer mal wieder nach älteren Artikeln – aber jedesmal wenn ich Code sehe bekomme ich Augenkrebs. Du musst ihn ja nicht so gestalten wie bei 24ways.org aber wenigstens etwas benutzerfreundlicher? :(

    Und der Hinweis das man ihn ja in einen Texteditor kopieren kann macht nur wenig Sinn. Denn es werden die ganzen Codeschnippsel immer nur kurz angerissen und nicht am Ende nochmal zusammengefasst. Minimal 5mal Copy & Paste pro Artikel machen sich bei Anfängern bemerkbar ;-)

    Na ja nur ein Hinweis von mir. Wenn man schon Tutorials mit Code veröffentlicht, dann kann man ja schon ein wenig auf die User eingehen.

  6. Kommentar Autor
    Markus
    Kommentar

    Hi Monika, ersteinmal danke für die hilfreichen Tutorials! Du beschreibst hier, wie man die Kommentare des jeweiligen Beitrag-Autors anders gestalten kann. Gibt es auch eine Möglichkeit, dies explizit für den Admin des Blogs zu machen? Also zum einen sollen die Kommentare des Beitrag-Autors anders dargestellt werden, darüber hinaus sollen Comments vom Admin der ja vom Autor abweichen kann auch anders dargestellt werden. Zwar gibt WP mittlerweile bereits eigene Klassen dafür aus, jedoch kann man auf diese Weise keinen Texthinweis (alla: Kommentar vom Admin) einbinden. In Deinem Beispiel oben nutzt Du „post_author“ als Bedingung, gibt es da auch etwas im Sinne von „admin“? Was mir beim Bau eines neuen Themes gerade auffällt ist außerdem, dass zwar die Rolle jedes x-beliebigen Nutzers auf Administrator gesetzt werden kann, allerdings wird außer für den „eigentlichen“ admin des Blogs für keinen diese User mit Admin-Rolle auch die Admin-Klasse in den Kommentaren ausgegeben?!?!

    viele Grüße, Markus

  7. Kommentar Autor
    Monika
    Kommentar

    hi Markus, das was Du brauchst wäre user_level – weil Admin ist immer *der* Admin
    wenn user_level =10 dann…
    wenn user_level =10 und author

    nehm ich an..

    lg

  8. Kommentar Autor
    Markus
    Kommentar

    vielen Dank für die rasche Antwort, werd´s gleich mal ausprobieren …

  9. Kommentar Autor
    Jason
    Kommentar

    ich hab da iwie nen problem.
    bei mir kommt nach dem kommentar absenden immer nen fehler
    also kein php fehler sondern eindach halt n fehler
    der geht immer nach dem kommentar abschicken geklickt wurde auf blah/blub/comemnt-page-/comment#{commentid}
    commentid eben die nummer von grad verschickten comment.
    allerdings gibts die seite net (comment-page-) da fehlt noch ne nummern angabe.
    und ich hab keine ahnung wo die weiterleitung generiert wird. bzw. warum der fehler kommt.
    eienr ne lösung?

  10. Kommentar Autor
    Monika
    Kommentar

    Hi Jason
    sei so gut und stell diese Frage im forum.wordpress-deutschland.org
    schlicht, weil ich derzeit keine Zeit mich diesem Problem so anzunehmen wies sein müßt

    tut mir leid :(

    lg

  11. Kommentar Autor
    Jason
    Kommentar

    ok. versteh ich natürlich ^^ bin auch immer im dauerstress und das schon ohne blogverwaltung ^^

  12. Kommentar Autor
    Jason
    Kommentar

    ok. unabhängig von allem.
    will hier jetzt net die comments spammen aber.
    bei mir hatte ich ja wie oben das prob dass ich auf die seite comments-page-/ weitergeleitet werde. nach dem ich diese zeile aus der functions.php entfernt hatte ging es….
    wp_list_comments(array(‚callback‘ => ‚mts_comment‘));
    keine ahnung warum aber jetzt klappts. ^^
    falls einer ausser mir das prob auch hatte. hoffe ich, dass es hilft.