web-dev-qa-db-fra.com

Comment supprimer certaines options d’écran et certaines colonnes d’un type de publication dans wp_list_table?

Sur la page où nous listons tous les articles publiés: example.domain.com/wp-admin/edit.php

Il y a un onglet Options d'écran dans le coin supérieur droit. En cliquant dessus, un menu glisse vers le bas. Ce menu déroulant contient des cases à cocher. Lorsque vous cochez ou décochez ces cases, certaines colonnes de la table des publications sont affichées/masquées, selon qu'elles sont cochées ou non.

Je cherche un moyen d’obtenir par programme une liste de toutes les options d’écran enregistrées pour ce type de message (type de message par défaut: post). Une fois que j'obtiens une liste de ces options d'écran enregistrées, je vérifierai si un certain nombre d'options est répertorié. S'ils correspondent à un élément de la liste, je prévois de supprimer ces options.

WordPress - Screen Options - List Posts Cliquez ici pour une capture d'écran en taille réelle

Question Comment puis-je obtenir par programme une liste de toutes les options d'écran enregistrées sur les types d'article (page avec un tableau répertoriant chaque article)?

Vous recherchez une solution similaire à celle proposée pour supprimer certaines options d’écran et certaines méta-cases de type ajout/modification .

3
Michael Ecklund

Ce qu'il vous faut, c'est modifier la variable $columns utilisée lors de l'affichage de la liste, que vous pouvez modifier à l'aide des crochets 'manage_posts_columns' et 'manage_pages_columns' pour post_type='post' et post_type='page', respectivement. Si vous souhaitez ignorer les types de publication personnalisés, vous pouvez inspecter le deuxième paramètre transmis à 'manage_posts_columns', comme je l'ai fait dans mon exemple pour montrer comment.

Supposons donc que vous souhaitiez vous débarrasser de l'option d'écran "Commentaires" et de la colonne associée que vous voyez dans cette capture d'écran pour Articles et Pages, respectivement:

Déposez la classe suivante dans le fichier functions.php de votre thème ou dans un plug-in que vous êtes en train de construire. Ce code supprimera l'option d'écran "Comments" et la colonne associée (cette réponse étant similaire à votre autre question , j'ai ajouté un "2" au nom de la classe, donc dans Michael_Ecklunds_Admin_Customizer2):

class Michael_Ecklunds_Admin_Customizer2 {
  function __construct() {
    add_action( 'manage_pages_columns', array( $this, 'manage_columns' ) );
    add_action( 'manage_posts_columns', array( $this, 'manage_columns' ), 10, 2 );
  }
  function manage_columns( $columns, $post_type = 'page' ) { //2nd param not passed for pages
    if ( in_array( $post_type, array( 'post', 'page' ) ) ) {
      // This is only for posts and pages, 'if (in_array(...))' just illustrates how.
      unset( $columns['comments'] );
    }
    return $columns;
  }
}
new Michael_Ecklunds_Admin_Customizer2();

Et voici à quoi cela ressemble après avoir ajouté le code ci-dessus à un site WordPress 3.4:

En utilisant le débogueur Zend dans PhpStorm voici l'inspection de $columns dans le crochet 'manage_posts_columns' afin que vous puissiez voir les valeurs qu'une installation par défaut de WordPress 3.4 a pour la liste de modification Post encerclé les index de tableau que j'ai référencés dans mon exemple, à savoir $columns['comments']:

J'espère que c'est ce que vous cherchiez?

9
MikeSchinkel