web-dev-qa-db-fra.com

empêche l'affichage des publications d'une catégorie spécifique dans la section des publications de l'administrateur

Pour certaines raisons, j'ai créé un plugin qui fait automatiquement des publications avec une catégorie spécifique. Maintenant, dans la section des messages de l’administrateur, les messages de cette catégorie spécifique ont été trop nombreux et il a été difficile de trouver d’autres messages.

Pour cela, j’ai écrit un autre plugin et je veux empêcher l’affichage des posts de cet identifiant ou slug de catégorie spécifique dans la section posts de l’administrateur sans utiliser de plugin tiers. Et je veux créer un menu dans la section admin pour afficher les messages de cette catégorie spécifique.

Le slug de ma catégorie cible est 'eventscat'.

Mais je ne sais pas comment faire, quel crochet dois-je utiliser?

1
saeid ezzati

Vous pouvez utiliser l'action pre_get_posts pour affecter des requêtes, à la fois en front-end et en admin. Dans votre cas, vous devez vous assurer que vous n'affectez que les requêtes de l'administrateur et vous pouvez même utiliser get_current_screen pour le réduire davantage. Voici un exemple qui modifierait la requête uniquement sur la page des publications classiques:

add_action ('pre_get_posts', 'wpse311946_restrict_cats');
function wpse311946_restrict_cats ($query) {
   // retrieve the id of the category to be excluded
   $idObj = get_category_by_slug ('eventscat'); 
   $id = $idObj->term_id;
   // find current admin page
   $current_screen = get_current_screen ();
   // conditionally exclude category
   if (is_admin() && $current_screen->id == "edit-post" ) {
     $query->set ('cat', -$id);
     }
   }

Vous pouvez utiliser le même filtre, légèrement modifié, pour vous assurer que seuls les messages de cette catégorie sont affichés sur la page des autres messages que vous souhaitez créer (cela aura un autre identifiant d'écran).

1
cjbj