Mi chiedo se c'è un modo per cambiare la posizione predefinita delle meta box di Wordpress come "immagine in primo piano" per i tipi di post personalizzati senza doverle trascinare manualmente?
Esempio:
Mi chiedo se c'è un modo per cambiare la posizione predefinita delle meta box di Wordpress come "immagine in primo piano" per i tipi di post personalizzati senza doverle trascinare manualmente?
Esempio:
Risposte:
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 post
in questo esempio a qualunque sia il tuo tipo di post personalizzato.
add_meta_box()
bisogno di un $callback
nome 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)?
/wp-admin/edit-form-advanced.php
e 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
.
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.)
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.