Comment supprimer certaines options d'écran et métadonnées du type d'ajout / modification de message?


10

Désormais, lorsque vous ajoutez ou modifiez une publication particulière dans le type de publication souhaité, il existe également plus d'options d'écran. Cependant, ces options d'écran affichent / masquent les métadonnées. Je voudrais être en mesure d'obtenir par programme une liste de toutes ces options d'écran enregistrées de métadonnées, afin de pouvoir vérifier à nouveau si un certain tableau d'options d'écran existe, et si c'est le cas, je prévois de les supprimer par programme.

WordPress - Options d'écran - Ajouter ou modifier un message - Méta-boîtes 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 (zones de métadonnées) sur les types de publication, où vous souhaitez ajouter ou modifier une publication particulière dans le type de publication souhaité.

En fin de compte, l'objectif ici est de supprimer ces options et pas simplement de les désactiver. Je cherche à faire quelque chose dans le sens de ce que j'ai accompli pour supprimer les méta-boîtes de tableau de bord inutiles .

Réponses:


13

Ce dont vous avez besoin est global $wp_meta_boxesindexé par get_current_screen()->id. La suppression des options d'écran supprimera également les métaboxes que vous pouvez faire juste avant l'affichage des options d'écran à l'aide du 'in_admin_header'crochet.

Supposons donc que vous souhaitiez vous débarrasser de l' option d'écran "Envoyer les rétroliens" que vous voyez dans cette capture d'écran:

Déposez la classe suivante dans le functions.phpfichier de votre thème ou dans un plugin que vous êtes en train de créer et le code supprimera l' option d'écran "Send Trackbacks" (et sa métabox associée, qui est aussi ce que vous vouliez, non?):

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

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 $wp_meta_boxes[get_current_screen()->id]pour que vous puissiez voir quelles valeurs une installation par défaut de WordPress 3.4 a dans l'écran d'édition de publication (j'ai encerclé les index de tableau auxquels j'ai fait référence dans mon exemple, à savoir $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

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


3
Simplement extraordinaire! Félicitations, Ecklund, vous avez non seulement reçu une réponse canonique, mais une réponse légendaire ..!
brasofilo

@brasofilo Merci pour le compliment. Je suis honoré.
MikeSchinkel

@MikeSchinkel Cela fonctionne sur l'ajout / l'édition d'un message, et merci pour cela, mais comment supprimez-vous les métadonnées des options d'écran pour la page qui a une wp_list_table contenant une liste de tous vos messages? Reportez-vous à la capture d'écran n ° 1.
Michael Ecklund

@MichaelEcklund Salut, je suppose que je ne devrais pas répondre aux questions quand je suis trop fatigué pour bien comprendre la question, hein? La réponse à la question sans réponse est en fait considérablement différente de celle à laquelle j'ai répondu, il s'agit donc vraiment de deux questions différentes. Que pensez-vous de la modification de cette question pour demander ce à quoi j'ai répondu, puis de l'ajout d'une autre question comme demander ce que je n'ai pas fait? Si vous pouvez le faire et publier un lien vers celui-ci ici dans les commentaires, je le trouverai donc je posterai une réponse de détails équivalents pour cette question aussi. Sinon, il peut devenir compliqué d'écrire une réponse cohérente pour les deux.
MikeSchinkel

1
@MichaelEcklund Cool, merci.
Répondue

0

Désolé, c'est un peu secondaire, mais j'ai trouvé que c'était utile pour supprimer les méta-boîtes wp hors boîte, mais pas tant pour les méta-boîtes personnalisées ou liées au thème personnalisé. Pour illustrer un peu plus: J'ai installé un nouveau thème qui a introduit une méta-boîte personnalisée chaque fois que vous créez un article / une page, il apparaît dans les options de l'écran. (Je suis nouveau sur wp donc) Pour une raison quelconque, en utilisant l'approche de Mike, je n'ai pas pu supprimer cette méta-boîte personnalisée, mais cela a fonctionné pour tout ce qui n'est pas personnalisé. Pour ma stupidité, je n'arrêtais pas de frapper le mur pendant des heures, donc je devais revenir à ceci:

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.