Impostare Opzioni Schermo e Ordine Metabox Predefiniti per Admin
Sto cercando disperatamente un modo (qualsiasi modo) per impostare le "opzioni schermo" predefinite e l'ordine dei metabox attraverso il file functions.php. Qualcuno può fornire un aiuto in merito?

Impostare l'ordine delle meta box nelle pagine di modifica dei post
Dovrai rimuovere le meta box e aggiungerle nuovamente nell'ordine desiderato.
Per disabilitare le meta box: (personalizza secondo le tue esigenze, controlla l'id della metabox nel codice html per sapere quale nome usare come primo parametro delle funzioni)
function my_remove_meta_boxes() {
remove_meta_box('postcustom', 'post', 'core');
remove_meta_box('commentsdiv', 'post', 'core');
...
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
Dopo averle rimosse, puoi usare la funzione add_meta_box per aggiungerle nelle nuove posizioni: http://codex.wordpress.org/Function_Reference/add_meta_box. L'ordine delle meta box dipende dall'ordine in cui chiami la funzione add_meta_box. Esempio: con il seguente snippet, la meta box dei commenti apparirà prima di quella dei campi personalizzati.
function my_add_meta_boxes( $post_type, $post ) {
if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') )
add_meta_box('commentsdiv', __('Commenti'), 'post_comment_meta_box', $post_type, 'normal', 'core');
if ( post_type_supports($post_type, 'custom-fields') )
add_meta_box('postcustom', __('Campi personalizzati'), 'post_custom_meta_box', $post_type, 'normal', 'core');
...
}
add_action( 'add_meta_boxes', 'my_add_meta_boxes' );
Potresti voler dare un'occhiata al file wp-admin/edit-form-advanced.php
Impostare quali colonne del titolo mostrare nella pagina dell'elenco dei post
Devi usare il filtro manage_{$post_type}_posts_columns. Esempio: il seguente snippet rimuoverà la colonna dei commenti.
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
Impostare i risultati predefiniti da mostrare nella pagina dell'elenco dei post
Usa i filtri 'edit_{$post_type}_per_page' e 'edit_posts_per_page'.
function my_edit_post_per_page( $per_page, $post_type ) {
$edit_per_page = 'edit_' . $post_type . '_per_page';
$per_page = (int) get_user_option( $edit_per_page );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 1;
return $per_page;
}
add_filter( 'edit_posts_per_page', 'my_edit_post_per_page' );
Per indirizzare uno specifico tipo di post:
usa
add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );
es.add_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
per i post,add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );
per le pagine.oppure usa una condizione all'interno della tua funzione. es.:
function my_edit_post_per_page( $per_page, $post_type ) {
if( $post_type == 'post' ) { $edit_per_page = 'edit_' . $post_type . '_per_page'; $per_page = (int) get_user_option( $edit_per_page ); if ( empty( $per_page ) || $per_page < 1 ) $per_page = 1; } return $per_page;

Scusa, forse non mi sono spiegato correttamente. Mi riferivo alle meta box nella pagina di modifica dei post nell'area di amministrazione, così come all'impostazione del numero predefinito di post da visualizzare nella pagina dell'elenco dei post in amministrazione.

quindi tecnicamente questa non è una domanda, ma in realtà sono 2 domande?

Ho modificato la mia risposta. Fammi sapere se hai bisogno di maggiori dettagli.

@sorich87 grazie per la tua risposta, tuttavia da quello che ricordo non c'era modo di specificare l'ordine esatto di ogni metabox o sbaglio? Forse dovrei essere un po' più specifico. Sto fondamentalmente cercando vari frammenti di codice che mi permettano di pre-impostare diverse opzioni per tutti gli utenti senza dover accedere a ogni account. Esempi: impostare l'ordine esatto dei metabox nelle pagine di modifica dei post, impostare quali colonne del titolo vengono mostrate nella pagina dell'elenco dei post, impostare i risultati predefiniti da visualizzare nella pagina dell'elenco dei post... cose del genere. Grazie in anticipo.

Grazie per la tua risposta. Ho appena provato a utilizzare il codice che hai fornito per impostare il numero predefinito di post nell'elenco amministrativo dei post, tuttavia sembra non funzionare. È necessario fare qualcosa di specifico se si sta cercando di modificare il numero predefinito di risultati per un tipo di post specifico? In tal caso, esiste un modo per impostarlo per tutte le pagine dell'elenco dei post?

Spiacente, c'era un errore nel codice. L'ho modificato. Noterai il parametro $post_type che ti permette di specificare un tipo di post particolare.

@sorich87 il tuo codice funziona, ma ora se un utente cambia le opzioni dello schermo per mostrare un valore diverso, la pagina mostra solo il valore inserito tramite il file functions. Quello che cercavo era un modo per impostare le opzioni predefinite, ma se l'utente cambia manualmente le opzioni dello schermo, dovrebbe mostrare l'opzione impostata dall'utente.

@sorich87 inoltre... come potrei impostare le opzioni solo per un tipo di post specifico senza influenzare gli altri?

@sorich87 potresti fornire un esempio di impostazione dei valori solo per due tipi di post personalizzati? Forse sto facendo qualcosa di sbagliato

un altro esempio per favore. Supponiamo che tu abbia 5 tipi di post personalizzati. Ora, ipotizziamo che per post_type1 vuoi impostare il valore a 5 post, post_type2 impostato a un valore di 2 post e vuoi che tutti gli altri abbiano un valore predefinito di 10. Potresti mostrare come sarebbe questo codice? Inoltre, c'è un'opzione che si può impostare in modo che questi siano solo valori predefiniti a meno che l'utente non imposti manualmente il valore. Se sì, come potremmo forzare un valore in modo che l'utente non possa cambiarlo? Infine, quando selezioni "opzioni schermo" quel valore non si aggiorna/riflette il valore che viene effettivamente visualizzato.

Per chiunque stia cercando semplicemente di riordinare le meta box, questa risposta non è più l'approccio migliore. Vedi la risposta di Nabil.

Nel seguente esempio, sostituisci {CPT}
con il nome del tipo di post, come post
, page
, book
, event
, imaginary
, foobar
... Quindi, se hai un tipo di post chiamato event
, dovrai aggiungere un filtro per get_user_option_meta-box-order_event
.
add_filter( 'get_user_option_meta-box-order_{CPT}', 'metabox_order' );
function metabox_order( $order ) {
return array(
'normal' => join(
",",
array( // vvv Organizza qui come preferisci
'customdiv-{CPT}',
'authordiv',
'slugdiv',
)
),
);
}
Note:
- Oltre a
normal
, puoi anche avereside
eadvanced
- I valori sono ID di div separati da virgola, puoi ottenerli visualizzando il codice sorgente della pagina o puoi indovinarli
- Qualsiasi metabox esistente che non è incluso nell'ordine personalizzato verrà aggiunto automaticamente alla fine della tua lista.

Esiste un plugin che combina questi frammenti di codice insieme in modo che un amministratore possa forzare le posizioni delle meta box per tutti gli utenti senza dover programmare?
Buona pratica o meno, quando si fornisce supporto tecnico a utenti meno esperti, aiuta molto sapere cosa stanno vedendo e dove si trova sullo schermo. Forzare le meta box nella stessa posizione per tutti gli utenti può essere vantaggioso con determinati utenti.
Idealmente, gli utenti con il ruolo di amministratore potrebbero ancora riposizionare le proprie meta box, ma gli abbonati e i collaboratori potrebbero beneficiare dal vedere tutte le meta box nelle stesse posizioni.
Esiste un plugin del genere? Non sembra che io riesca a trovarne uno.
Questo plugin potrebbe essere un'opzione poiché impedisce semplicemente agli utenti di spostare le meta box, ma non è stato aggiornato da un decennio. https://wordpress.org/plugins/unsortable-meta-box/

Se hai una nuova domanda, per favore chiedila cliccando il pulsante Fai una domanda. Includi un link a questa domanda se può aiutare a fornire contesto. - Da Revisione
