BP avatar suggestions, un avatar selon ton genre !

Woha !
Ce soir sur le forum de BP avatar suggestions, Andrés m’a demandé s’il serait possible d’afficher les avatars selon le genre de l’utilisateur connecté. En gros : afficher une liste d’avatars pour mesdames et une autre pour messieurs!

Alors, comme je suis en train de préparer une nouvelle version de ce plugin (si vous souhaitez mettre en place ce code, téléchargez la 1.1-beta2), j’ai simplement ajouté un filter sur le tableau contenant la liste des avatars. Si l’admin lors de sa constitution de la liste ajoute au nom de ses fichiers images ‘mec’ et ‘nana’ par exemple, alors, il lui suffit d’ajouter un xprofile BuddyPress de type radio (dans mon exemple de code ci-dessous, le nom de celui-ci est gender) et de fixer les valeurs des choix à ‘mec’ ou ‘nana’.

/* in the functions.php of your theme */
add_filter( 'bp_as_filter_avatar_list', 'filter_list_by_xprofile_gender', 10, 1 );

function filter_list_by_xprofile_gender( $avatar_list ) {
	$loggedin_user_id = bp_loggedin_user_id();
	
	$gender = xprofile_get_field_data( 'gender', $loggedin_user_id );
	
	if( !empty( $gender ) && is_array( $avatar_list ) ) {
		
		$new_list = array();
		
		foreach( $avatar_list as $avatar ) {
			/* when the admin uploads the avatars in the front end
			he musts insert the possible values for the xprofile field 'gender'
			for example avatar-for-girl-1.jpg, avatar-for-guy-1.jpg where
			'guy' or 'girl' are the possible values of the xprofil field (a radio).
			*/
			if ( strpos( $avatar, $gender ) )
				$new_list[] = $avatar;
		}
		
		/* if we found avatars for the gender */
		if( count( $new_list ) >= 1 )
			$avatar_list = $new_list;
	}
	
	/* finally we returns the filtered list */
	return $avatar_list;
}

12 réflexions au sujet de « BP avatar suggestions, un avatar selon ton genre ! »

  1. dan

    Sympa comme initiative, mais je trouve qu’elle ne va pas assez loin.
    Dans ma liste d’avatars, j’ai des silhouettes de filles et de garçons. Donc à priori, chacun sait ce qu’il a à choisir, sans cette fonctionnalité. De plus elle n’offre que 2 choix si je suis bien (radio = oui ou non, huh ?)

    En revanche, un choix depuis un select permettrait plus de combinaisons, notamment par rapport aux groupes.
    Imaginons un site avec 4 groupes: rouge, bleu, jaune et vert.

    Sur le profil, on aurait « Choix de votre groupe de référence »: rouge, bleu, jaune ou vert qui offrirait du coup un tri par tribu. Avec un vrai travail sur les avatars à la clé, ce qui donnerait des images informatives et non pas simplement cosmétiques…
    On verrait aussi d’un coup d’œil à quel groupe appartient le membre. Une info plus pertinente selon moi dans une communauté que le sexe de l’utilisateur.(bien que tout dépend du site, hein ;-) )
    Le top serait d’avoir les 2 options: le genre et la tribu.

    à+ ! :D

    Répondre
  2. Pingback: L’Hebdo WordPress : WordCamp Paris 2013 – WordPress 3.6 – BuddyPress | WordPress Francophone

  3. Hervé@LogicielLibre

    Bonjour,
    Je viens de tester ton extension. Elle fonctionne bien….
    Néanmoins j’avai téléchargé plusieurs dizaines d’avatars dans des sous-dossiers.
    Je n’ai pas vu de possibilité de déclarer un répertoire d’avatars dans un sous-dossier (qui permettrait de télécharger ou réinitialiser) les avatars dans cette bibliothèque en un clic.
    C’est donc une suggestion (à défaut d’avoir une astuce pour y arriver peut-être) ;-) ??

    J’ai testé aussi la dernière version 1.1beta2 en localhost avec wp 3.5.1 et BP 1.6.3, cela n’a pas mis à jour le plugin et j’ai eu un msg d’erreur :
     » Cannot redeclare bp_avatar_suggestion_init() (previously declared in /opt/lampp/htdocs/www/atout-int/wp-content/plugins/bp-avatar-suggestions/bp-avatar-suggestions.php »

    @+

    Répondre
    1. imath Auteur

      Salut,

      À mon avis, tu devrais remplacer le contenu du dossier bp-avatar-suggestions et ne pas avoir 2 dossiers pour ce plugin… Github rajoute soit master soit le tag au nom du dossier c sans doute l’origine de ton pbm.

      Répondre
  4. Hervé@LogicielLibre

    Bonjour,
    Ok effectivement je pensai que la beta allait écraser l’original.
    J’ai donc supprimé le dossier de la version 1 et j’ai renommé le dossier de la beta en « bp-avatar-suggestions »

    Par contre je n’ai pas vu de modification notable dans la configuration ! et surtout je ne sais pas ou sont stockés les avatars actifs. Je ne sais pas si je me suis bien exprimé, mais je souhaitai déplacer en masse les avatars et non pas les importer 1 par 1 !??
    @+
    PS: Dans l’idéal j’aurai souhaité d’avoir un dossier avatars positionné ou je veux
    (et si possible avec des sous-dossiers quand il y a plusieurs dizaines d’avatars)

    Répondre
  5. Hervé@LogicielLibre

    Désolé, mais je n’ai pas compris !! quelle fonctionnalité (la question ou le ps) ?
    Je reformule. En mettant tous les avatars dans le dossier (je ne sais pas ou), les images ne seront pas reconnus dans le choix des avatars ! C’est cela qui n’est pas possible ??
    a+

    Répondre
    1. imath Auteur

      Il faut envoyer les avatars un à un car au moment de l’upload, ils deviennent des posts de type attachment, et c’est ça qui sert de liaison. Si tu vas dans le menu Médias de ton WordPress, tu retrouveras les avatars uploadés.

      Répondre
  6. Shane

    Hi My profile field gender is « I am a » woman or man in dropdown.. my file is in female-generic.jpg and male-generic.jpg.

    How will I go with this please?

    Répondre
    1. imath Auteur

      Well in the code of the article, you can replace :
      xprofile_get_field_data( 'gender', $loggedin_user_id )
      by :
      xprofile_get_field_data( 'I am a', $loggedin_user_id )

      Then your jpg files should contain the possible choices so :
      instead of female-generic.jpg or male-generic.jpg, you should use woman-generic.jpg and man-generic.jpg as woman and man are the choices available in your dropdown.

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>