WordPress

Accueil » Codage » Exclure certaines pages de l’interface d’administration de WordPress sauf pour un utilisateur donné

Quand on livre un site à un client, il y a certaines pages qui contiennent ce que l’on appelle couramment des « tags » (des particularités qu’on traite en back-office, des mises en formes particulières, des shortcodes ou encore des « fonctions ») qui ne doivent PAS être modifiées sous peine de « bugs » d’affichage ou de rendu.

Cette ou ces pages, donc, n’ont aucun intérêt à figurer dans la liste des documents à éditer. On peut aussi, pour une raison x ou y, vouloir un masquer un ou plusieurs articles. Je l’ai donc ajouter dans le code ci-dessous.

Le code :

function exclude_from_admin($query) {
global $user_ID, $pagenow, $post_type;
   $the_id = get_queried_object_id();
   $exclude_posts = array(1725); /* id(s) des posts à cacher */
   $exclude_pages = array(186); /* id(s) des pages à cacher */
   $exclude_mix = array_merge($exclude_posts, $exclude_pages);
   $user_can = ($user_ID==1) ? true : false;
   if ( ! is_admin() && !$user_can ) {
      if( in_array($the_id, $exclude_mix) ) add_action( 'admin_bar_menu', 'remove_edit_node', 99 );
      return $query;
   }
   if ( !$user_can && $pagenow == 'edit.php') {
      if($post_type == 'page' )
         $query->query_vars['post__not_in'] = $exclude_pages;
      elseif ($post_type == 'post' )
         $query->query_vars['post__not_in'] = $exclude_posts;
   }
}
add_filter( 'parse_query', 'exclude_from_admin' );
function remove_edit_node( $wp_admin_bar ) {
   $wp_admin_bar->remove_node( 'edit' );
}

L’utilisation :

  • ajouter le code ci-dessus dans le fichier « functions.php » de votre thème (ou thème enfant),
  • dans la variable « $exclude_posts » entrez, séparés par des virgules, les id des articles que vous souhaitez masquer dans l’interface d’administration de WordPress.
  • Dans la variable « $exclude_pages » entrez, séparés par des virgules, les id des pages que vous souhaitez masquer dans l’interface d’administration de WordPress.

Pour connaître ces fameux « id« , rien de plus facile. Dans la liste des articles à modifier placez-vous au-dessus du lien « Modifier » pour celui qui vous intéresse, vous verrez dans la barre d’état de votre navigateur un lien sous la forme :
https://www.domain.tld/wp-admin/post.php?post=1249&action=edit
Notez tous les « id » que vous souhaitez masquer, reproduisez la même chose avec les pages et ajoutez ces listes dans votre fichier « functions.php » comme indiqué ci-dessus.

Dans un prochain article, nous verrons comment laisser la possibilité aux utilisateurs du site de modifier ces pages « sensibles » mais en les informant qu’ils doivent prendre des précautions en les manipulant 🙂 …

 

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 » Exclure certaines pages de l’interface d’administration de WordPress sauf pour un utilisateur donné