Come modificare la posizione predefinita delle meta box WP?


Risposte:


22

Puoi rimuovere le meta box predefinite con remove_meta_box e aggiungerle nuovamente 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 postin questo esempio a qualunque sia il tuo tipo di post personalizzato.


Questo sembra l'ideale, grazie ancora Milo ci proverò.
Mr.Brown,

@Milo: Come se avesse add_meta_box()bisogno di un $callbacknome di funzione, come mai conosco il nome della funzione utilizzata da WordPress? Supponiamo che io voglia fare la stessa cosa con la sidebar meta_box "Categorie" (#categorydiv)?
Mayeenul Islam

5
@MayeenulIslam cerca nel file /wp-admin/edit-form-advanced.phpe vedrai dove WordPress aggiunge tutte le meta box principali e i callback e gli argomenti che utilizza. per le categorie lo è post_categories_meta_box.
Milo,

5

Ho lottato anche con questo. Non ho davvero trovato un modo pulito per ridefinire il layout / ordine, soprattutto perché può essere modificato dagli utenti quando / se trascinano le caselle.

Mi piace fare le cose "con" wordpress (di solito paga), quindi non scontrarsi con esso e il modo in cui Wordpress lo fa è il seguente:

wordpress memorizza le posizioni trascinate per utente per schermata e ci sono un sacco di meta-chiavi utente che usa a seconda della pagina / schermata in cui si trova.

Quindi potresti aggiungere un'azione o un filtro per ogni nuovo utente per impostare le impostazioni dell'utente nel modo in cui desideri che sia l'impostazione predefinita.
1) Trascina e organizza la pagina che vuoi influenzare, quindi 2) cerca in phpmyadmin la tua meta-utente per il tuo ID e vedi cosa wp ha memorizzato lì. 3) quindi codifica l'azione di un nuovo utente come segue se un utente NON ha già quell'impostazione (per evitare di sovrascrivere una scelta personale), puoi impostarla come desideri - con il valore che hai trovato dall'impostazione manuale.

Per avere l'idea dei meta-metake utente che stai cercando, guarda questi screenshot: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Ho finito per scrivere un plugin generico in modo che potessi come amministratore definire il mio layout preferito per tutti gli utenti per tutti i tipi di pagine / schermate. Quindi potevano modificarlo, ad esempio quando sono diventati più competenti. Inoltre non si romperà quando wp cambia cose come me plugin recupera solo i valori utente del modello, non prova nemmeno a impostare il valore su un valore hardcoded.)


1
Anche se mi piace l'idea alla base di questo approccio, la soluzione di Milo sembra molto più veloce, quindi invece ci proverò, ma grazie per aver dedicato del tempo a informarmi anche su questo approccio. Vedrò di usarlo in un secondo momento. Ho risposto al tuo commento.
Mr.Brown,

3
Il plug-in proposto da Anmari è un plug-in commerciale a pagamento ... e non sembra aggiornato dall'agosto dell'anno scorso. Stai ancora mantenendo quel plugin? In caso contrario, hai pensato di condividerlo su Github?
unfulvio,

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

0

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

Gioca sul meta-box-order_post dell'opzione utente (tabella wp_usermeta).

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

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

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.