Retirer des options du filtre de tri des activités

de | 6 juillet 2016

Voici une petite fonction qui vous permettra de retirer – selon le contexte que vous définirez – des options du filtre de tri se trouvant sur le haut des pages d’activités (site, profil, groupe…). Notez que cela ne retire que l’option du sélecteur, pas l’activité elle-même.

Et si le filtre fait partie d’une autre extension ?

Au cas ou un plugin ajouterait son filtre et que vous vouliez le retirer, je vous conseille de respecter l’internalisation du array que vous allez rajouter.
Par exemple:
Nom du plugin: Tartempion
Nom de l’item: Tartempion Updates qui sera traduit en français Mises à jour de Tartempion
Vous pourriez mettre directement Mises à jour de Tartempion dans le array. Le problème c’est que cela risque de fortement perturber l’affichage du filtre, à cause du caractère particulier du à. Pour les petits malins, laissez tomber: ´ ne marchera pas. Raison pour laquelle il vaut mieux internationaliser la chaîne. Comme ceci:
'Tartempion Updates' => __( 'Tartempion Updates', 'textdomain du plugin' ),
Si malgré cela, ça devait ne pas fonctionner (par ex. pour bbPress), vous devrez chercher dans le code source du plugin. Tu   te   calmes  ! La solution pour bbPress est au bas de l’article.

Activités du site

function bpfr_remove_some_activity_filters( $filters, $context ) { 
	/**
          * @param string $context The current context. 'activity', 'member',
	  *                        'member_groups', 'group'.
	  *
	  * @return string HTML for <option> values.
	 */
	
	if ( 'activity' == $context ) {
	       // commentez les éléments que vous voulez afficher
		$remove_these = array(
		//	'New Members'			=> __( 'New Members',		'buddypress' ),
			'Profile Updates'		=> __( 'Profile Updates',	'buddypress' ),
		//	'Updates'				=> __( 'Updates',			'buddypress' ),
			'Friendships'			=> __( 'Friendships',		'buddypress' ),
			'Group Updates'			=> __( 'Group Updates',		'buddypress' ),
			'New Group'				=> __( 'New Group',			'buddypress' ),
			'Group Memberships'		=> __( 'Group Memberships',	'buddypress' ),
		//	'Posts'					=> __( 'Posts',				'buddypress' ),
			'Comments'				=> __( 'Comments',			'buddypress' ),
		); 
		
		foreach ( $filters as $key => $val ) {		
			if ( in_array( $val, $remove_these ) )
			unset( $filters[ $key ] );			
		 }
	}
	
    return $filters; 
} 
add_filter( 'bp_get_activity_show_filters_options', 'bpfr_remove_some_activity_filters', 20, 2 );

Voici les éléments se rapportant aux autres contextes:

Profil > mes activités

		$remove_these = array(
			'Updates'			=> __( 'Updates',			'buddypress' ),
			'Friendships'		=> __( 'Friendships',		'buddypress' ),
			'Group Updates'		=> __( 'Group Updates',		'buddypress' ),
			'New Group'			=> __( 'New Group',			'buddypress' ),
			'Group Memberships'	=> __( 'Group Memberships',	'buddypress' ),
			'Posts'				=> __( 'Posts',				'buddypress' ),
			'Comments'			=> __( 'Comments',			'buddypress' ),
		);

Groupes > activités du groupe

	if ( 'group' == $context ) {

	$remove_these = array( 
		'Updates'				=> __( 'Updates',			'buddypress' ), 
		'Group Updates'			=> __( 'Group Updates',		'buddypress' ),
		'Group Memberships'		=> __( 'Group Memberships',	'buddypress' ),
	);

Si vous utilisez bbPress pour les forums de groupe, 2 autres éléments peuvent être retirés en désactivant une fonction propre à bbPress.
La méthode est différente de celle de BP et de plus elle n’est pas filtrable (pour le moment). C’est tout ou rien. Soit vous retirez les 2 éléments (topics & replies), soit aucun.
La fonction se trouve dans bbpress/includes/extend/buddypress/activity.php:351

function bpfr_remove_bbp_activities_dropdown_labels() {

		 // Remove forum filters in site wide activity streams
		remove_action( 'bp_activity_filter_options',        array( bbpress()->extend->buddypress->activity , 'activity_filter_options'   ), 10    );
	
		 // Remove forum filters in single member activity streams
		 remove_action( 'bp_member_activity_filter_options', array( bbpress()->extend->buddypress->activity , 'activity_filter_options'   ), 10   );

		 // Remove forum filters in single group activity streams
		 remove_action( 'bp_group_activity_filter_options',  array( bbpress()->extend->buddypress->activity , 'activity_filter_options'   ), 10   );
  	 
}
add_action( 'bp_init', 'bpfr_remove_bbp_activities_dropdown_labels', 9 );
Partagez...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someone