Accueil » Codage » Divi » N’afficher certains modèles de la bibliothèque Divi qu’à certains utilisateurs

Peut-être vous rappelez-vous de l’article que j’avais rédigé il y a quelques temps déjà pour exclure certaines pages et articles de l’interface d’administration et bien cette fois-ci nous allons ajouter au fichier functions.php de notre thème enfant, le code nécessaire pour masquer certains éléments de la bibliothèque Divi.

Alors vous allez peut-être me demander : « Pourquoi ? » et bien tout simplement parce qu’en tant que développeur web, il m’arrive très régulièrement  de créer des éléments (modules, sections, rangées ou encore modèles complets) que je souhaite « injecter » à certains endroits du site sur lequel je travaille. Cela peut être dans l’entête, avant ou après le contenu, dans le pied de page, bref un peu n’importe où :).

Le soucis, c’est que lorsque je livre le site à mon client, il n’a pas toujours conscience de l’importance de ces modèles et de leurs usages. Ou bien avec le temps, il oublie et un jour souhaitant faire un peu de « ménage » il supprime des éléments de cette bibliothèque… Le résultat, vous vous en doutez, est un site qui ne va plus fonctionner tout à fait comme avant :)…

Donc, pour éviter cela, j’ai écrit une petite fonction qui permet de limiter l’accès à ces modèles aux seules « personnes compétentes » (celle du milieu web quoi).

Le code pour n’afficher les layouts cachés qu’aux admins :

function exclude_some_layouts_from_admin($query) {
global $pagenow, $post_type;
	if ( ! is_admin() )
		return $query;

	$user = current_user_can('administrator');

	if ( $user!=1 && $pagenow == 'edit.php' && $post_type == 'et_pb_layout' ) {
		$query->query_vars['post__not_in'] = array( 600, 608 ); /* id des layouts à cacher */
	}
}
add_filter( 'parse_query', 'exclude_some_layouts_from_admin' );

Le code pour n’afficher les layouts cachés qu’aux utilisateurs dont l’adresse email est autorisée :

function exclude_some_layouts_from_admin_by_mail($query) {
global $pagenow, $post_type;

	if ( ! is_admin() )
		return $query;

	$emails = array('adresse1@domain.tld', 'adresse2@domain.tld');
	$user = wp_get_current_user();
	$user = (in_array($user->user_email, $emails)) ? 1 : 0;

	if ( $user!=1 && $pagenow == 'edit.php' && $post_type == 'et_pb_layout' ) {
		$query->query_vars['post__not_in'] = array( 600, 608 ); /* id des layouts à cacher */
	}
}
add_filter( 'parse_query', 'exclude_some_layouts_from_admin_by_mail' );

Voilà, vous avez donc le choix entre limiter l’accès aux layouts aux rôle « Administrateur » ou bien limiter leurs accès d’après une liste d’adresses email :).

Amusez-vous bien 😀 !!

 

Si vous souhaitez m'aider à continuer à faire vivre ce blog, vous pouvez effectuer un don, ci dessous :).
Processing ...
EUR

 

Information : Véritablement conquis par ce thème, je me suis inscrit sur le site de ElegantThemes en tant qu'affilié, ce qui signifie que si vous cliquez sur le lien ci-dessous et achetez le thème, je recevrai une commission :).

ElegantThemes

 

Après avoir visité les coulisses, découvrez le site :) !

Poster le commentaire

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

Accueil » Codage » Divi » N’afficher certains modèles de la bibliothèque Divi qu’à certains utilisateurs
Share This