Tout savoir sur WordPress
Tutoriel WordPress

Afficher la provenance d’un commentaire sur WordPress

Cette astuce permet d’afficher la provenance du commentaire. C’est-à-dire que l’on peut afficher à côté du pseudo, “Depuis un iPhone” ou “Depuis un iPad”, etc…

Il est possible d’afficher la provenance d’un commentaire à côté du nom de l’auteur. J’entends par provenance l’appareil/navigateur avec lequel a été posté le commentaire (iPhone, iPad, BlackBerry, Google Chrome, Safari, Opera, bref.)

Commentaire avec la provenance affichée

Il suffit d’une seule fonction. Elle affiche la provenance selon un mot clé détecté et utilise le champ comment_agent de la table wp_comments.
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

function ua_filter_author_comment( $author_link ) {
	
    global $comment;
    $UA = ""; // Par défaut, vide.
    $user_agents = array('iphone' => ' (Depuis un iPhone)',
			'ipad' => ' (Depuis son iPad de riche)'
		);
	
    foreach( $user_agents as $user_agent => $text ):
	$UA = preg_match( '/'.$user_agent.'/i', $comment->comment_agent ) ? $text : $UA;
    endforeach;

    return $author_link . $UA;
}
add_filter( 'get_comment_author_link', 'ua_filter_author_comment' );

[/pastacode]
Vous pouvez ajouter tous les user agents que vous souhaitez, par exemple pour ajouter l’affichage de la provenance depuis un BlackBerry j’ajoute un élément dans le tableau (array) $user_agents :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

	
$user_agents = array('iphone' => ' (Depuis un iPhone)',
		     'ipad' => ' (Depuis son iPad de riche)',
		     'blackberry' => ' (Depuis le BlackBerry (de Richard))'
	);

[/pastacode]
La casse n’est pas sensible. Notez que même les anciens commentaires afficheront la provenance !

Cet article a été mis à jour il y a 4408 jours - Il n'est peut être plus à jour !

Article écrit par Julio P.

Fondateur de SecuPress, l’extension de sécurité WordPress, Julio Potier est un Expert WordPress, un Formateur Expérimenté et un Consultant en Sécurité Web.

Il aime partager ses compétences et ses réflexions sur WordPress, donnant des conférences partout dans le monde.

19 Commentaires

  1. Tout d’abord, merci pour vos articles !
    Le site s’étoffe dans le bon sens de jour en jour.

    Mais juste en passant, votre site n’importe pas le fichier CSS sous chrome osx (uniquement) chez moi. wp-minify semble en cause.

  2. “Notez que les anciens commentaires n’afficheront pas la provenance !”
    Ok, j’ai dit n’importe quoi, je ais modifier mon script pour faire mieux et ne pas utiliser de meta … Merci Cédric (iphoneaddict.fr)

  3. Sympa comme fonctionnalité^^ Cependant ça ne fonctionne pas chez moi, si j’ai ‘firefox’ dans mon tableau, tous les coms passent en via firefox… Une idée d’où cela peut venir ?

  4. oui, bien sur, mon commentaire n’était pas clair, désolé :D
    En fait quand firefox figure dans l’array, par exemple : $user_agents=array(‘chrome’ => ‘ (depuis chrome)’,’firefox’ => ‘ (depuis FireFox)’);
    Tous mes commentaires, y compris ceux postés depuis chrome s’affiche avec la mention (depuis FireFox).
    Merci de ton aide.

  5. Tout fonctionne nickel, je m’étais trompé au niveau de ma boucle foreach($user_agents as $user_agents => $text) au lieu de foreach($user_agents as $user_agent => $text).
    Merci encore de ta réactivité.

  6. Bonjour Matthieu,
    Il est logique que si tu souhiates détecter “firefox” alors “firefox” sera affiché non ?
    Peux tu coller ton code que je vois ça ?
    Merci

  7. Quelle version de Chrome ? Je viens de tester ce code :

    function ua_filter_author_comment( $author_link )
    {
    	global $comment;
    	$UA = ""; // Par défaut, vide.
    	$user_agents = array(	'iphone' => ' (Depuis un iPhone)',
    				'ipad' => ' (Depuis son iPad de riche)',
    				'chrome' => ' (Depuis Chrome)',
    				'firefox' => ' (Depuis FireFox)'
    			);
    	foreach( $user_agents as $user_agent => $text ):
    		$UA = preg_match( '/'.$user_agent.'/i', $comment->comment_agent ) ? $text : $UA;
    	endforeach;
    	return $author_link . $UA;
    }
    add_filter( 'get_comment_author_link', 'ua_filter_author_comment' );
    

    donc c’est le mien + 2 user agent, les tiens, voici le résultat :
    http://baw.li/db/120328-122720.png

  8. Je suis sous Chrome 17 et je vois que Chrome n’a pas le mot “Firefox” dans son useragent donc étrange … Colle tout le code peut etre ? :s

  9. Ha, c’est un peu de ma faute, dans une foreach je mets souvent pour clé le nom de mon tableau sans le s, ce qui au premier regard peut laisser penser que c’est la même chose.
    Tant mieux si ça fonctionne !

  10. Bonjour,
    Afin de renseigner le tableau, j’ai dans l’idée de lister d’abord tous les cas possibles. Dans phpMyAdmin, avec la requête SQL :
    SELECT distinct comment_agent
    FROM `wp_comments`
    c’est la jungle.

    Une autre idée ?