Comment puis-je cacher une catégorie de collaborateurs dans le modifier / ajouter un nouvel écran de poste?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/8197

Question

J'ai une situation où je dois cacher une catégorie spécifique et les enfants de ce produit sur les utilisateurs connectés en tant que contributeurs. Je ne veux pas qu'ils voient cette catégorie et des enfants dans les catégories méta-boîte sur l'écran Ajouter un nouveau message.

Je ne peux pas trouver un plug-in (qui fonctionne) pour ce faire, se demandant si quelqu'un sait d'autre d'un, ou encore mieux s'il y a une fonction que je peux utiliser pour le faire?

Était-ce utile?

La solution

Salut @davemac:

Eh bien, je l'ai écrit avant que je scie que vous avez répondu à votre propre question donc je pourrais aussi bien le poster de toute façon:

add_filter('list_terms_exclusions', 'yoursite_list_terms_exclusions', 10, 2);
function yoursite_list_terms_exclusions( $exclusions, $args ) {
  global $pagenow;
  if (in_array($pagenow,array('post.php','post-new.php')) && 
     !current_user_can('see_special_cats')) {
    $exclusions = " {$exclusions} AND t.slug NOT IN ('slug-one','slug-two')";
  }
  return $exclusions;
}

Ce code suppose que vous avez utilisé un plugin comme les membres plug-in pour créer un capability appelé 'see_special_cats' et que vous avez attribué à chaque rôle que vous voulez avoir accès aux catégories sauf bien sûr 'Contributors'.

Depuis que vous avez trouvé le plugin que vous ne pouvez pas besoin de cela, mais peut-être cela aidera quelqu'un d'autre.

Autres conseils

si vous voulez cacher la catégorie de contributeur, mais seul administrateur peut voir cette catégorie puis le changement « see_special_cats' à 'manage_options' Je l'ai testé et il fonctionne espoir qu'il aide. Merci! :)

Après avoir cherché beaucoup sur le web que je trouve une solution, vous pouvez passer dans les IDs des catégories que vous souhaitez masquer comme un tableau, puis coller dans votre fichier functions.php. Toutes les catégories seront affichés pour les administrateurs

$ exclude_array = array ( "5", "6", "7", "1");

function hide_categories_for_specific_user( $exclusions, $args ){

if (!current_user_can('manage_options') ) {

   // IDs of terms to be excluded
   $exclude_array = array("5","6","7","1"); // CHANGE THIS TO IDs OF YOUR TERMS


   // Generation of exclusion SQL code
   $exterms = wp_parse_id_list( $exclude_array );
   foreach ( $exterms as $exterm ) {
           if ( empty($exclusions) )
                   $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
           else
                   $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
   }

   // Closing bracket
   if ( !empty($exclusions) )
       $exclusions .= ')';

   // Return our SQL statement
   return $exclusions;

  }
}

 // Finally hook up our filter
 add_filter( 'list_terms_exclusions', 'hide_categories_for_specific_user', 10, 2 );
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top