Cum să schimbi poziția implicită a meta box-urilor în WordPress?

7 nov. 2011, 06:57:15
Vizualizări: 22.7K
Voturi: 21

Mă întreb dacă există o modalitate de a schimba poziția implicită a meta box-urilor din WordPress, cum ar fi "imagine reprezentativă" pentru tipurile de postări personalizate, fără a fi nevoie să le tragem manual?

Exemplu: Exemplu de poziționare a Meta Box-urilor în WordPress

1
Comentarii
Toate răspunsurile la întrebare 3
3
24

Puteți elimina casetele meta implicite cu remove_meta_box și le puteți adăuga din nou într-o poziție diferită cu 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', __('Imagine reprezentativă'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

Aceasta va elimina caseta din coloana laterală și o va adăuga în coloana principală. Schimbați post în acest exemplu cu numele tipului vostru de postare personalizată.

7 nov. 2011 08:12:06
Comentarii

Pare ideal, mulțumesc din nou Milo, o să încerc.

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

@Milo: Deoarece add_meta_box() are nevoie de un nume de funcție $callback, cum pot afla numele funcției folosite de WordPress? Să presupunem că vreau să fac același lucru pentru meta_box-ul din bara laterală 'Categorii' (#categorydiv)?

Mayeenul Islam Mayeenul Islam
1 iul. 2013 11:26:10

@MayeenulIslam uită-te în fișierul /wp-admin/edit-form-advanced.php și vei vedea unde WordPress adaugă toate meta box-urile de bază și funcțiile callback și argumentele pe care le folosește. pentru categorii este post_categories_meta_box.

Milo Milo
1 iul. 2013 18:23:50
3

Am întâmpinat și eu aceeași problemă. Nu am găsit o metodă curată de a redefini aspectul/ordinea - mai ales că poate fi modificată de utilizatori atunci când trag cutiile.

Prefer să fac lucrurile „împreună” cu WordPress (de obicei merită), decât să mă ciocnesc cu el, iar modul în care WordPress gestionează acest lucru este următorul:

WordPress stochează pozițiile trase per utilizator per ecran și există o serie întreagă de chei meta pentru utilizator pe care le folosește în funcție de pagina/ecranul pe care se află.

Deci, ai putea adăuga un acțiune sau un filtru pentru fiecare utilizator nou pentru a seta preferințele utilizatorului așa cum dorești să fie implicit.
1) Trage și aranjează pagina pe care dorești să o afectezi, apoi 2) verifică în phpMyAdmin la meta-datelor utilizatorului pentru ID-ul tău și vezi ce a stocat WordPress acolo. 3) apoi codează acțiunea pentru noul utilizator astfel: dacă un utilizator NU are deja acea setare configurată (pentru a evita suprascrierea unei alegeri personale), ai putea să o setezi așa cum dorești - cu valoarea pe care ai găsit-o din setarea manuală.

Pentru a înțelege despre ce chei meta pentru utilizator vorbești, vezi aceste capturi de ecran: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Am ajuns să scriu un plugin generic, astfel încât, ca administrator, să pot defini aspectul preferat pentru toți utilizatorii pentru tot felul de pagini/ecrane. Apoi, aceștia puteau să îl modifice, de exemplu, pe măsură ce deveneau mai experimentați. De asemenea, nu se va strica când WordPress schimbă lucruri, deoarece plugin-ul meu doar preia valorile șablonului pentru utilizator, nici măcar nu încercă să seteze valoarea la una hardcodată.)

7 nov. 2011 08:00:15
Comentarii

Deși îmi place ideea din spatele acestei abordări, soluția lui Milo pare mult mai rapidă, așa că voi încerca mai degrabă aceea, dar îți mulțumesc că ți-ai luat timp să mă informezi și despre această metodă. Cu siguranță voi analiza această abordare într-un moment ulterior. Ți-am dat +1 comentariului tău.

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

Plugin-ul propus de Anmari este un plugin comercial plătit... și nu pare actualizat din august anul trecut. Mai întreții acel plugin? Dacă nu, ai luat în considerare să-l faci disponibil pe Github?

unfulvio unfulvio
12 apr. 2012 11:14:15

Mulțumesc @anmari pentru împărtășirea acestei abordări, a fost foarte utilă.

Maor Barazany Maor Barazany
7 dec. 2013 00:53:40
0

Dacă dorești să ordonezi precis cutiile meta, poți folosi acest plugin: https://wordpress.org/plugins/post-meta-box-order/

Acesta lucrează cu opțiunea meta-box-order_post din setările utilizatorului (tabelul wp_usermeta).

Notă 1: această tehnică poate fi aplicată oricărui CPT personalizat prin modificarea sufixului flag-ului: meta-box-order_[CPT_TĂU]

Notă 2: nu uita să modifici hash-ul în codul plugin-ului pentru a aplica noua ordine tuturor utilizatorilor existenți.

27 sept. 2016 14:28:49