Comment supprimer certaines options d'écran et certaines méta-cases de l'ajout / la modification d'un type de message?

10

Désormais, lorsque vous ajoutez ou modifiez un message particulier dans le type de message souhaité, il existe également d'autres options d'écran. Bien que ces options d’écran affichent / cachent des boîtes méta. J'aimerais pouvoir obtenir par programme une liste de toutes les options d'écran des boîtes à méta enregistrées pour pouvoir vérifier à nouveau si un certain tableau d'options d'écran existe et si elles existent, je prévois de les supprimer par programme.

Cliquez ici pour Capture en taille réelle

Question Comment puis-je obtenir par programme une liste de toutes les options d'écran enregistrées (boîtes méta) sur les types d'article, dans laquelle vous souhaitez ajouter ou modifier un article particulier dans le type d'article souhaité?

En fin de compte, le but ici est de supprimer ces options et pas simplement de les désactiver. Je souhaite faire quelque chose dans le sens de ce que j'ai accompli pour les supprimer les boîtes de métadonnées inutiles du tableau de bord .

    
posée Michael Ecklund 26.06.2012 - 22:47

2 réponses

13

Ce dont vous avez besoin, c’est global $wp_meta_boxes indexé par get_current_screen()->id . Supprimer les options d’écran supprimera également les métaboxes que vous pouvez faire juste avant d’afficher les options d’écran à l’aide du crochet 'in_admin_header' .

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éposezlaclassesuivantedanslefichierfunctions.phpdevotrethèmeoudansunplug-inquevousêtesentraindecréer.Lecodesupprimeral'optiond'écran"Envoyer les rétroliens" (et son métabox associé, qui est aussi ce que tu voulais, 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:

Utilisationdu Débogueur Zend dans PhpStorm , voici l'inspection de $wp_meta_boxes[get_current_screen()->id] afin que vous puissiez voir les valeurs qu'une installation par défaut de WordPress 3.4 a dans l'écran de modification postale (j'ai encerclé les index de tableau que j'ai référencés dans mon exemple, à savoir $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] :

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

    
réponse donnée MikeSchinkel 27.06.2012 - 04:36
0

Désolé, c’est un peu la piste secondaire, mais j’ai trouvé que c’était utile quand il s’agissait de supprimer les méta-boîtes wp out-of-box, mais pas beaucoup pour les méta-boîtes personnalisées ou à 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 qui apparaît dans les options de l'écran. (Je suis nouveau sur wp so) Pour une raison quelconque utilisant l'approche de Mike, je n'ai pas pu supprimer cette boîte méta personnalisée, mais cela a fonctionné pour tout ce qui n'est pas personnalisé. Pour ma stupidité, j'ai continué à frapper le mur pendant des heures, mais je ne pouvais toujours pas comprendre, alors j'ai dû 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;
    
réponse donnée Yinnie 11.11.2012 - 03:01

Lire d'autres questions sur les étiquettes