Gestion des commentaires et Gravatar

Comme vous pourrez peut-être le constater, après cette mise à jour de mon thème, je continue de le peaufiner un peu, et aujourd'hui, je me suis occupé de la section dédiée aux commentaires. J'en ai même profité pour appliquer le plugin Nofollow Free, pour mieux vous servir. Après quelques recherches sur le web, afin de trouver le code d'origine séparant les trackbacks et les commentaires, je suis tombé sur cet excellent tutoriel de Amaury.

Grâce à lui, on peut partir d'une base saine et dépourvu d'artifices et ainsi y appliquer la mise en forme que l'on veut grâce aux feuilles de style (CSS). La séparation des commentaires humains, des tracbacks est alors fluide et parfaitement gérable.

Voici le code récupéré :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php // Do not delete these lines
	if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
		die ('Merci de ne pas lancer cette page directement.');
 
	if (!empty($post->post_password)) { // if there's a password
		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
		?>
			<p class="nocomments">Cet article est protégé par un mot de passe. Entrez ce mot de passe pour voir les commentaires.</p>
		<?php
		return;
		}
	}
 
	function comments_human_number( $zero = false, $one = false, $more = false, $deprecated = '', $number = 0 ) {
		if ( $number > 1 )
			$output = str_replace('%', $number, ( false === $more ) ? __('% Comments') : $more);
		elseif ( $number == 0 )
			$output = ( false === $zero ) ? __('No Comments') : $zero;
		else // must be one
			$output = ( false === $one ) ? __('1 Comment') : $one;
 
		echo apply_filters('comments_number', $output, $number);
	}
 
	function comments_trackback_number( $zero = false, $one = false, $more = false, $deprecated = '', $number = 0 ) {
		if ( $number > 1 )
			$output = str_replace('%', $number, ( false === $more ) ? __('% trackbacks') : $more);
		elseif ( $number == 0 )
			$output = ( false === $zero ) ? __('No trackback') : $zero;
		else // must be one
			$output = ( false === $one ) ? __('1 trackback') : $one;
 
		echo apply_filters('comments_number', $output, $number);
	}
 
	/* This variable is for alternating comment background */
	$oddcomment = 'class="alt" ';
?>
 
<!-- You can start editing here. -->
<?php if ($comments) : ?>
 
	<?php
	$trackbacks_counter = $comments_human_counter = 0;
	foreach ( (array) $comments as $comment ) :		
		$type = get_comment_type();
		if ( $type != 'comment' ) {
			$trackbacks[] = $comment;
			$trackbacks_counter++;
		} else {
			$comments_human[] = $comment;
			$comments_human_counter++;
		}	
	endforeach;
	?>
 
<h3 id="comments"><?php comments_human_number('Aucun commentaire', 'Un commentaire', '% commentaires', '', $comments_human_counter );?> pour &#8220;<?php the_title(); ?>&#8221;</h3> 
	<ol class="commentlist">
		<?php foreach ( (array) $comments_human as $comment ) : ?>
			<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>"> 
				<cite><?php comment_author_link() ?></cite> dit :
				<?php if ($comment->comment_approved == '0') : ?>
				<em>Votre commentaire est en attente de modération.</em>
				<?php endif; ?>
				<br />
				<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('j F Y') ?> à <?php comment_time() ?></a> <?php edit_comment_link('Editer','-- ',''); ?></small>
				<?php comment_text() ?>
			</li>
			<?php /* Changes every other comment to a different class */ $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : ''; ?>
		<?php endforeach; /* end for each comment */ ?>
	</ol>
 
	<h3 id="trackbacks"><?php comments_trackback_number('Aucun trackback', 'Un trackback', '% trackbacks', '', $trackbacks_counter );?></h3> 
	<ol class="trackbacklist">
		<?php foreach ( (array) $trackbacks as $comment ) : ?>
			<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>"><?php comment_author_link() ?></li>
			<?php /* Changes every other comment to a different class */ $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : ''; ?>
		<?php endforeach; /* end for each trackback */ ?>
	</ol>
 
<?php else : // this is displayed if there are no comments so far ?>
  <?php if ('open' == $post->comment_status) : ?> 
		<!-- If comments are open, but there are no comments. -->
	 <?php else : // comments are closed ?>
		<!-- If comments are closed. -->
		<p class="nocomments">Les commentaires sont fermés. </p>
	  <?php endif; ?>
<?php endif; ?>
 
<?php if ('open' == $post->comment_status) : ?>
<h3 id="respond">Laisser un commentaire </h3>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>Vous devez être  <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">connecté</a> pour publier un commentaire.</p>
<?php else : ?>
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if ( $user_ID ) : ?>
<p>Connecté en tant que <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Se déconnecter du site.">Se déconnecter  &raquo;</a></p>
<?php else : ?>
<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
<label for="author"><small>Nom <?php if ($req) echo "(obligatoire)"; ?></small></label>
</p>
<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
<label for="email"><small>Adresse e-mail (ne sera pas publié) <?php if ($req) echo "(obligatoire)"; ?></small></label>
</p>
<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small>Site Web</small></label>
</p>
<?php endif; ?>
<!--<p><small><strong>XHTML:</strong> Vous pouvez utiliser ces tags: <code><?php echo allowed_tags(); ?></code></small></p>-->
<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
<p><input name="submit" type="submit" id="submit" tabindex="5" value="Dites-le !" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>
<?php do_action('comment_form', $post->ID); ?>
</form>
 
<?php endif; // If registration required and not logged in ?>
<?php endif; // if you delete this the sky will fall on your head ?>

Ensuite, puisque l'on peut embellir un peu les commentaires et créer des repères visuels importants, on peut utiliser des avatars. Concernant le module d'affichage de ces images, je voulais utiliser le système Gravatar, implémenté automatiquement dans WordPress. Quelques plugins permettent aussi cette gestion mais il y a une fonction assez simple à mettre en place, surtout lorsqu'on gère un thème créé de ses propres mains.

J'ai donc trouvé une première explication sur ce blog, ce qui m'a conduit, merci à lui, sur cette magnifique explication de Benoit. Toutefois, le code qu'il propose n'est pas tout à fait le bon et son billet n'a pas été mis à jour. Il faut parcourir les commentaires pour que l'appel de la fonciton fonctionne sans erreur de syntaxe. Cette erreur est due au fait que le script WordPress interprète mal le code. Voici donc le lien vers le code qui fonctionne.

Le voici copier/coller à placer avant l'appel du contenu des commentaires :

1
2
3
4
5
6
7
<?php 
if ( !empty( $comment->comment_author_email ) ) {
	$md5 = md5( $comment->comment_author_email );
	$default = urlencode( 'http://use.perl.org/images/pix.gif' );
	echo "<img style='float: right; margin-left: 10px;' src='http://www.gravatar.com/avatar.php?gravatar_id=$md5&amp;size=60&amp;default=$default' alt='' />";
}
?>

Celui-ci propose un style intégré, mais il est facile de l'enlever afin de gérer l'affichage grâce à la feuille de style. Pour la taille de l'avatar, on peut voir que le "size=" est ici à 60. libre à vous de le mettre à la taille que vous voulez.

Il ne reste qu'à activer Gravatar dans les réglages de discussion du panneau d'administration.



Le SNEP diffuse son rapport 2012 : 5% de perte du marché de la musique

Si le marché du numérique des ventes de musiques est en progression selon la conférence de presse du SNEP du premier trimestre 2012, enregistrant 32,6 millions d'euros (+24%), celui-ci ne l'aide pas à compenser pour [...]

La nouvelle adresse de The Pirate Bay ? 194.71.107.80

Alors que le site fait l'objet de nombreuses censures et de filtrages dans beaucoup de pays, beaucoup d'Internautes, pour y échapper et les contourner utilisent des proxys, comme ceux référencés sur PirateReverse. [...]

Yahoo Axis : un navigateur et des extensions pour les autres

Difficile d'y croire, et pourtant, c'est aussi vrai que surprenant : Yahoo lance Axis, son navigateur désaxé sous forme d'applications pour iPhone, iPad, avec une version pour Android en cours de développement, [...]

Ajouter les icônes redémarrer, mettre en veille, éteindre dans le dock Unity

Aucun système d'exploitation n'est parfait, et même si de nombreux efforts ont été apportés à l'environnement Unity d'Ubuntu, on peut lui reprocher par exemple de ne pas mettre à disposition un système rapide de [...]

Restaurer les URL normales des liens de recherches dans Google

Si vous faites des recherches sur Google, vous avez très certainement fait cette expérience malsaine de faire un clic droit pour essayer de copier l'adresse officielle du lien que vous voulez partager ou ouvrir, et [...]