come sapere se l'amministratore è nella pagina di modifica articolo o pagina
Puoi usare get_current_screen per determinare questo.
$screen = get_current_screen();
if ( $screen->parent_base == 'edit' ) {
echo 'schermata di modifica';
}
Non so se direi esattamente che questo sia sempre meglio, dipende da ciò che è necessario, ma probabilmente è il modo in cui lo farei. Il grande vantaggio di questo metodo è che hai accesso a più informazioni e quindi puoi fare più distinzioni e diverse. Dai un'occhiata alla documentazione per capire cosa intendo.
Dovrebbe essere utilizzato in hook successivi, il Codex dice:
La funzione restituisce
nullse chiamata dall'hookadmin_init. Dovrebbe andare bene usarla in un hook successivo comecurrent_screen.
Questo sarebbe vero anche per un elenco di articoli e pagine, giusto? Ad esempio mywebsite.com/wp-admin/edit.php?post_status=draft&post_type=post
Nathan
@Nathan Vero, è così. Come detto nella risposta, ciò che è giusto per lo scopo dipende dal caso d'uso. Certamente questo non è il modo migliore per tutti i casi, ma in alcune situazioni è buono se non addirittura il migliore.
Nicolai Grossherr
Nota: Chiamare direttamente get_current_screen() in molti casi causerà un errore fatale. Assicurati di racchiuderlo in una funzione e chiamarlo da un hook appropriato.
squarecandy
$screen->is_block_editor == 1 ha funzionato per me per verificare la pagina di modifica. parent_base risulta vuoto.
Floris
parent_base per me è sempre NULL sia nell'elenco dei post che nella modifica del singolo post. Quello che ho usato invece è if (get_current_screen()->base === 'post' && get_current_screen()->post_type === 'my_post_type'). Questo è per la modifica amministrativa del singolo post. Per la schermata edit.php (la schermata di amministrazione con l'elenco dei post) usa edit invece di post.
Denis P
modifica: leggi i commenti per possibili limitazioni.
Puoi utilizzare la variabile globale $pagenow
global $pagenow;
if ($pagenow == 'post.php' && get_post_type() == 'post') {
// modifica di un articolo del blog
}
if ($pagenow == 'profile.php') {
// modifica della pagina del profilo utente
}
Ho scoperto che questo funziona tranne per $_GET['post_type']. Tuttavia, get_post_type() ha funzionato per me invece.
Ashe Abbott DiBlasi
$_GET['post_type'] è impostato solo su post-new.php, quando si crea un nuovo post, e non su post.php che è quando il post viene modificato. get_post_type() funzionerà per post.php perché il post esiste già e ha un tipo di post, ma non sono sicuro che funzioni su post-new.php. La risposta di Frank è migliore in quanto funziona per entrambi.
Jacob Peattie
Nella prima condizione, perché c'è un OR ( || ) piuttosto che un AND ( && )?
alexg
grazie per l'aiuto. è la risposta migliore in alcune situazioni.
Abilash Erikson
no, e per quanto riguarda post-new.php? ci sono nuovi nomi di pagina ad ogni versione importante, questo non è affidabile.
scavenger
- Usa 'get_current_screen', ma assicurati prima che esista.
- Come dice il codex "Questa funzione è definita sulla maggior parte delle pagine di amministrazione, ma non su tutte."
- Tra l'altro questo filtra anche le visualizzazioni normali (legate ai lettori) (rileggi quella frase, con enfasi su pagine di amministrazione).
molto probabilmente la prossima cosa che vorrai capire è se sei effettivamente su una pagina o un articolo...
// Rimuovi i meta box inutili degli articoli function FRANK_TWEAKS_current_screen() { // "Questa funzione è definita sulla maggior parte delle pagine di amministrazione, ma non su tutte." if ( function_exists('get_current_screen')) { $pt = get_current_screen()->post_type; if ( $pt != 'post' && $pt != 'page') return; remove_meta_box( 'authordiv',$pt ,'normal' ); // Meta box Autore remove_meta_box( 'commentstatusdiv',$pt ,'normal' ); // Meta box Stato Commenti remove_meta_box( 'commentsdiv',$pt ,'normal' ); // Meta box Commenti remove_meta_box( 'postcustom',$pt ,'normal' ); // Meta box Campi Personalizzati remove_meta_box( 'postexcerpt',$pt ,'normal' ); // Meta box Estratto remove_meta_box( 'revisionsdiv',$pt ,'normal' ); // Meta box Revisioni remove_meta_box( 'slugdiv',$pt ,'normal' ); // Meta box Slug remove_meta_box( 'trackbacksdiv',$pt ,'normal' ); // Meta box Trackback } } add_action( 'current_screen', 'FRANK_TWEAKS_current_screen' );