[AUTOMATIQUE] Cet article a plus de 5 ans.
Il se peut donc que les informations qu'il fournit ne soient plus totalement exactes.

Buddypress affiche nativement le compteur de notifications dans la barre d’administration. Si vous ne souhaitez pas afficher cette barre d’amin, mais que vous voulez afficher (quelque part) le compteur de notifications utilisateur, vous pouvez utiliser le snippet suivant.

function live_notifications_counter() {
	$notifications = bp_core_get_notifications_for_user( bp_loggedin_user_id() );
	if(empty($notifications)){
		$count= 0;
	} else {
		$count=count( bp_notifs_get_all_notification_ids(bp_loggedin_user_id() ) );
	}

	echo $count;
}

Personnellement, je l’utiliser par avec de l’ajax afin de mettre à jour le compteur toutes les 30 secondes par exemple (comme ça, si l’utilisateur reste longtemps sur une page, le compteur est mis à jour automatiquement (un peu comme sur Facebook).

La fonction apte à fonctionner avec de l’ajax est donc la suivante.

function live_notifications_counter() {
	$notifications = bp_core_get_notifications_for_user( bp_loggedin_user_id() );
	if(empty($notifications)){
		$count= 0;
	} else {
		$count=count( bp_notifs_get_all_notification_ids(bp_loggedin_user_id() ) );
	}

	echo $count;

	//la méthode ajax de WordPress nécessite d'utiliser DIE à la fin de la fonction pour que le callback soit propre (nettoyer le buffer). 
	if( defined( 'DOING_AJAX' ) && DOING_AJAX ) { 
		die(); 
	} 
} 
add_action( 'wp_ajax_my_live_notifications_counter', 'live_notifications_counter' ); 
add_action( 'wp_ajax_nopriv_my_live_notifications_counter', 'live_notifications_counter' );

Je vous laisse tout le loisir de faire votre fonction jQuery pour lancer vos appels AJAX 😉

Article rédigé parBrice CAPOBIANCO

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager !

Coorganisateur des Meetups WordPress Rennes et fondateur de bweb.
Partager cet article

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