Come modificare la posizione predefinita delle meta box di WordPress?

7 nov 2011, 06:57:15
Visualizzazioni: 22.7K
Voti: 21

Mi chiedo se esiste un modo per cambiare la posizione predefinita delle meta box di WordPress come "immagine in evidenza" per i custom post type senza doverle trascinare manualmente?

Esempio: Esempio di posizionamento delle Meta Box in WordPress

1
Commenti
Tutte le risposte alla domanda 3
3
24

Puoi rimuovere i meta box predefiniti con remove_meta_box e riaggiungerli in una posizione diversa con add_meta_box:

add_action('do_meta_boxes', 'wpse33063_move_meta_box');

function wpse33063_move_meta_box(){
    remove_meta_box( 'postimagediv', 'post', 'side' );
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

Questo lo rimuoverà dalla colonna laterale e lo aggiungerà alla colonna principale. Cambia post in questo esempio con il nome del tuo custom post type.

7 nov 2011 08:12:06
Commenti

Sembra perfetto, grazie ancora Milo, proverò a usarlo.

Mr.Brown Mr.Brown
7 nov 2011 16:53:40

@Milo: Siccome la funzione add_meta_box() richiede un nome di funzione per il $callback, come faccio a sapere il nome della funzione utilizzata da WordPress? Supponiamo che voglia fare la stessa cosa per il meta_box della sidebar 'Categorie' (#categorydiv)?

Mayeenul Islam Mayeenul Islam
1 lug 2013 11:26:10

@MayeenulIslam guarda nel file /wp-admin/edit-form-advanced.php e vedrai dove WordPress aggiunge tutti i meta box principali e le callback e gli argomenti che utilizza. Per le categorie è post_categories_meta_box.

Milo Milo
1 lug 2013 18:23:50
3

Anche io ho avuto difficoltà con questo. Non ho trovato un modo pulito per ridefinire il layout/ordine - specialmente perché può essere modificato dagli utenti quando trascinano le caselle.

Preferisco fare le cose 'con' WordPress (di solito ripaga), piuttosto che scontrarmi con esso, e il modo in cui WordPress gestisce questo è il seguente:

WordPress memorizza le posizioni trascinate per utente per schermata e ci sono un'intera serie di meta-chiavi utente che utilizza a seconda della pagina/schermata in cui ci si trova.

Quindi potresti aggiungere un'azione o un filtro per ogni nuovo utente per impostare le preferenze utente come vuoi che sia il default.
1) Trascina e organizza la pagina che vuoi modificare, poi 2) controlla in phpmyadmin i meta utente per il tuo ID e vedi cosa WordPress ha memorizzato lì. 3) poi codifica la nuova azione utente come segue: se un utente NON ha già quella impostazione (per evitare di sovrascrivere una scelta personale), potresti impostarla come desideri - con il valore che hai trovato impostandola manualmente.

Per farti un'idea delle meta-chiavi utente che stai cercando, guarda questi screenshot: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Alla fine ho scritto un plugin generico in modo che come amministratore potessi definire il layout preferito per tutti gli utenti per tutti i tipi di pagine/schermate. Potevano poi modificarlo ad esempio man mano che diventavano più esperti. Inoltre non si romperà quando WordPress cambia le cose perché il mio plugin recupera semplicemente i valori utente del template, non cerca nemmeno di impostare il valore su un valore hardcoded.)

7 nov 2011 08:00:15
Commenti

Anche se mi piace l'idea alla base di questo approccio, la soluzione di Milo sembra molto più veloce quindi proverò quella, ma grazie per aver dedicato del tempo a informarmi anche su questo metodo. Sicuramente esplorerò questo approccio in un secondo momento. Ho votato positivamente il tuo commento.

Mr.Brown Mr.Brown
7 nov 2011 16:55:08

Il plugin proposto da Anmari è un plugin commerciale a pagamento... e non sembra essere aggiornato dallo scorso agosto. State ancora mantenendo quel plugin? In caso contrario, avete considerato di condividerlo su Github?

unfulvio unfulvio
12 apr 2012 11:14:15

Grazie @anmari per aver condiviso questo approccio, davvero utile.

Maor Barazany Maor Barazany
7 dic 2013 00:53:40
0

Se vuoi ordinare con precisione le tue meta box, puoi usare questo plugin: https://wordpress.org/plugins/post-meta-box-order/

Agisce sull'opzione meta-box-order_post delle impostazioni utente (tabella wp_usermeta).

Nota 1: questa tecnica può essere applicata a qualsiasi CPT personalizzato modificando la fine del flag: meta-box-order_[IL_TUO_CPT]

Nota 2: non dimenticare di cambiare l'hash nel codice del plugin per applicare il tuo nuovo ordine a tutti gli utenti esistenti.

27 set 2016 14:28:49