Come rimuovere alcune opzioni dello schermo e meta box dal tipo di inserimento / modifica post?


10

Ora, quando aggiungi o modifichi un determinato post all'interno del tipo di post desiderato, ci sono anche più opzioni di schermo. Tuttavia, queste opzioni dello schermo mostrano / nascondono meta box. Vorrei essere in grado di ottenere a livello di codice un elenco di tutte queste opzioni dello schermo registrate delle meta-caselle, in modo da poter verificare nuovamente se esiste una determinata gamma di opzioni dello schermo e, se lo fanno, ho intenzione di rimuoverle a livello di codice.

WordPress - Opzioni schermo - Aggiungi o modifica post - Meta box Fare clic qui per la schermata a schermo intero

Domanda Come posso ottenere a livello di codice un elenco di tutte le Opzioni schermo (meta box) registrate sui tipi di post, in cui si desidera aggiungere o modificare un determinato post all'interno del tipo di post desiderato.

Alla fine, l'obiettivo qui è rimuovere queste opzioni e non semplicemente disabilitarle. Sto cercando di fare qualcosa in linea con quello che ho realizzato per rimuovere le meta box del dashboard non necessarie .

Risposte:


13

Ciò di cui hai bisogno è $wp_meta_boxesindicizzato a livello globale get_current_screen()->id. La rimozione delle opzioni dello schermo rimuoverà anche i metabox che è possibile eseguire appena prima che le opzioni dello schermo vengano visualizzate utilizzando il 'in_admin_header'gancio.

Supponiamo quindi che tu voglia sbarazzarti dell'opzione dello schermo "Invia trackback" che vedi in questo screenshot:

Rilascia la seguente classe nel functions.phpfile del tuo tema o in un plug-in che potresti creare e il codice rimuoverà l' opzione dello schermo "Invia trackback" (ed è associato metabox, che è anche quello che volevi, giusto?):

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();

Ed ecco come appare dopo aver aggiunto il codice sopra a un sito WordPress 3.4:

L'utilizzo del debugger Zend all'interno di PhpStorm qui è l'ispezione in $wp_meta_boxes[get_current_screen()->id]modo da poter vedere quali valori ha un'installazione predefinita di WordPress 3.4 nella schermata Modifica post (Ho cerchiato gli indici dell'array a cui ho fatto riferimento nel mio esempio, cioè $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

Spero che questo sia quello che stavi cercando?


3
Semplicemente stupefacente! Complimenti, Ecklund, non solo hai ricevuto una risposta canonica, ma leggendaria ..!
brasofilo,

@brasofilo Grazie per il complimento. Sono onorato.
MikeSchinkel,

@MikeSchinkel Funziona sull'aggiunta / modifica di un post, e grazie per quello, ma come si rimuovono i meta box delle opzioni dello schermo per la pagina che ha una wp_list_table che contiene un elenco di tutti i tuoi post? Fare riferimento allo screenshot n. 1.
Michael Ecklund,

@MichaelEcklund Ciao, immagino che non dovrei rispondere alle domande quando sono troppo stanco per comprendere appieno la domanda, eh? La risposta alla domanda senza risposta è in realtà significativamente diversa da quella a cui ho risposto, quindi sono in realtà due domande diverse. Come ti sentiresti a modificare questa domanda per porre la mia risposta e quindi aggiungere un'altra domanda come chiedere cosa non ho fatto? Se puoi farlo e postare un link qui nei commenti, quindi lo troverò pubblicherò una risposta con dettagli equivalenti anche per quella domanda. Altrimenti può essere complicato scrivere una risposta coerente per entrambi.
MikeSchinkel,

1
@MichaelEcklund Fantastico, grazie. Risposta: wordpress.stackexchange.com/a/56896/89
MikeSchinkel

0

Mi dispiace che sia un po 'laterale ma ho trovato utile quando si tratta di rimuovere meta box wp out of box ma non tanto per meta box personalizzate o personalizzate. Per illustrare un po 'di più: ho installato un nuovo tema che ha introdotto una meta-box personalizzata ogni volta che si aggiunge un post / pagina che appare nelle opzioni dello schermo. (Sono nuovo a wp così) Per qualche ragione usando l'approccio di Mike non sono stato in grado di rimuovere questa meta box personalizzata ma ha funzionato per tutto ciò che non era personalizzato. Per la mia stupidità ho continuato a colpire il muro per ore ancora non riuscivo a capire, quindi sono dovuto tornare a questo:

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;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.