Integrering med WordPress 'brukergrensesnitt Meta-bokser på egendefinerte sider

Dette er del 2 i en serie som ser på hvordan plugin og tema kan gi den beste brukeropplevelsen ved å "passe inn" med WordPress 'native brukergrensesnitt. Dette betyr mer enn bare ser en del av WordPress (som vi dekket i del ett), men der det er hensiktsmessig, etterligner den samme arbeidsflyten som (forhåpentligvis) er kjent for WordPress-brukere. En del av dette er hvordan du strukturerer sider og presenterer sluttbrukeren. Et utrolig nyttig verktøy fra både et brukergrensesnitt og utviklerperspektiv er meta-boksen. I denne opplæringen ser vi på hvordan du kan legge til metakasser til din egen tilpassede admin side.

Bruk av metakasser er vanlig i WordPress. Den brukes på Widgets, Menyer og Dashboard-sider - og selvfølgelig postredigeringsskjermen. De kan være et fantastisk verktøy for å forbedre brukeropplevelsen:

  • De gir en naturlig gruppering av informasjon. På postredigeringsskjermen er det en meta-boks for håndtering av innleggets publisering, en for hver taksonomi og en annen for å håndtere postens diskusjoner. Meta-bokser bryter opp informasjonen i lettere å håndtere biter.
  • Brukeren bestemmer hva som er viktig. Sluttbrukeren kan bestemme hvilke metakasser som vises, og kan helt skjule metakasser som ikke er relevante for dem. Enkelt sagt, dette tillater brukeren å manipulere siden slik at den er ordnet på en måte som letter deres arbeidsflyt.
  • Minimer eller fjern. Et lignende punkt til det ovenstående: irrelevante meta bokser kan minimeres eller skjules helt.
  • Ser bra ut. I det hele tatt ser meta-boksene seg bra ut. Siden de er ganske vanlige i WordPress, ser andre eksempler på metakasser (dvs. metakasser som ikke ser ut som den innfødte meta-boksen) bare ut av sted.

Et siste punkt som ikke bør gå ubemerket: Når du implementerer riktig metakasser, tillater også tredjeparter å legge til eller fjerne innhold fra admin siden, slik at plugin eller tema lett kan forlenges.

Vær oppmerksom på at jeg ikke fortaler bruk av metakasser for alt - bare hvor det er fornuftig å gjøre det. Som diskutert i del ett, er det tider hvor WordPress 'eksisterende brukergrensesnitt ikke er tilstrekkelig eller passende for hva pluginet ditt prøver å gjøre. I disse tilfellene, du bør ikke begrense deg til admin-brukergrensesnittet - men du bør heller ikke ignorere det.


Sidelayout

WordPress er veldig bra på å bli utvidet og meta bokser er ikke noe unntak. Skriptene og stilene som WordPress bruker til plassering, stil og "animere" metakasser er også tilgjengelig for oss. Ved å bruke dem betyr at metakasser (sammen med alle sine "funksjoner") kan legges til med relativt liten kode.

Men for å dra nytte av dette, må vi etterligne layouten på en WordPress 'admin side, slik at seleksjonene som brukes i skript og stiler, gjelder på vår side. Nå, selvfølgelig, implementerer forskjellige sider meta-bokser annerledes. Dashbordet har for eksempel opptil 4 jevnt store kolonner med metakasser, mens postredigeringssiden bare tillater 1 eller 2, med en som et sidefelt. Avhengig av hvordan du vil at siden din skal vises, må du strukturere siden din i samsvar med dette. I denne opplæringen skal jeg gå gjennom postredigeringsskjermens 1/2-meta-boksoppsett. Så kan vi ta en titt på grunnleggende wireframe på en admin side.

.pakke inn

Dette elementet bryter hele admin siden din. Det legger til en margin til toppen og høyre side for å holde administrasjonssiden vekk fra sidene på skjermen. Dette bør brukes på alle admin sidene dine.

 

Skjermikon

Neste er skjermikonet. Dette igjen skal vises på alle admin sidene dine. Markeringen for skjermikonet kan genereres ved å bruke funksjonen screen_icon (). Vi dekket bruk i del en av denne serien. screen_icon ( 'min-id') produserer HTML:

 

Overskrift

Neste er siden tittelen. Tittelen skal pakkes innvendig tags. Hvis det er hensiktsmessig, kan en "legg til ny" -link bli lagt inn i disse kodene:

  % s% s ', esc_html __ (' Sidetittel ',' plugin_domain '), esc_url (admin_url (admin.php? side = min-link-to-add-new)), esc_html __ (' Add New ',' plugin_domain ')); ?>

Form

Vanligvis, med metakasser, aksepterer du noen form for innspilling fra brukeren. For å gjøre dette må du pakke hele siden inn i et skjema. I alle fall er det nødvendig å lagre meta-boksinnstillingene (hvilke metakasser er stengt og plasseringen av metakassene).

 

#poststuff

Dette elementet bryter meta-bokholderen. Det er et viktig element som WordPress bruker dette til å målrette stiler og skript.

 

# Post-kroppen

Dette elementet fungerer som meta-bokholderen. Den har to viktige klasser:

Metabox-holder og columns- *. Den andre av disse angir sideoppsettet (om det har 1 eller 2 kolonner). Det brukerdefinerte layoutalternativet kan fås med get_current_screen () -> get_columns (). I det følgende bruker vi dette til å legge til klassen kolonnene-1 eller kolonnene 2- passende (med sistnevnte som standard).

 

Meta Box Containers Inside # Post-kroppen

Det er to meta-boksbeholdere, som fungerer som "kolonner" av metakasser. Den første, .Postboks-beholder-1, Fungerer som sidebjelke i 2-kolonne-oppsettet, og i 1-kolonne-oppsettet ligger like over den andre meta-boksbeholderen. Så er det # Post-body-innhold. Dette elementet (valgfritt) inneholder ikke noen metakasser, men inneholder innhold som du vil sitte øverst på siden, og ikke være flyttbart. I postredigeringsskjermen inneholder den for eksempel posttittelen og TinyMCE-editoren.

For å skrive ut metakassene i den aktuelle beholderen bruker vi do_meta_boxes funksjon som tar tre argumenter:

  • $ skjermen - Skjerm ID (eller vi kan bruke en tom streng for å bruke gjeldende skjerm-ID).
  • $ sammenheng - Dette en strengidentifikator som brukes når du registrerer meta-boksen. Dette kan være noe, men bør være beskrivende (for eksempel 'side' og 'normal'). Dette lar deg definere standardposisjon og rekkefølge av metakasser.
  • $ objekt - Dette sendes til meta-bokens tilbakering som det første argumentet, og vanligvis blir objektet redigert (for eksempel et innleggsobjekt, på postredigeringsskjermen). Hvis dette ikke er relevant for admin siden, kan du passere null.
 

Eksempellayout

 


Legge til Meta Bokser og Skjermalternativer

Nå har vi sidestrukturen vi nå vil ha oss (eller noen tredjepart) for å kunne legge til metakasser på siden. Vi vil også gjerne laste opp det nødvendige JavaScript som gjør at disse metakassene kan minimeres, skjules eller flyttes.

For å tillate meta bokser å bli lagt til, må vi skyte to kroker. Den første:

 add_meta_box_ screen_id

Passerer objektet som redigeres (eller null). Den andre:

 add_meta_box

Passerer to variabler: skjerm-ID og objektet blir redigert. Brukere kan deretter koble til disse handlingene og legge til meta-boksene på siden.

Neste vil vi laste inn WordPress-skriptet postbox.js. Dette skriptet lar brukeren flytte, minimere eller lukke metakasser (og lagrer preferanser). Skriptet må initialiseres, så vi må skrive ut en linje av javascript i bunnteksten for å gjøre dette.

Til slutt legger vi til et skjermalternativ som lar brukeren bytte mellom en og to kolonneoppsett. Skjermalternativer som lar brukeren skjule metakasser, blir automatisk lagt til. Vi bruker belastning - $ pagenow Kryss for å brann vår tilbakeringing bare på riktig side. For tilpassede admin sider, $ pagenow er skjerm-IDen.

  2, 'standard' => 2));  / * Skriver ut skript i bunntekst. Dette initialiserer metakassene * / funksjon wptuts_print_script_in_footer () ?>  

Alt som gjenstår er å legge til meta boksene.


Legge til Meta Bokser på siden

Normalt kan metakasser legges til ved hjelp av add_meta_boxes eller, enda bedre, det add_meta_boxes_ post_type kroker. Mer generelt posttype kan betraktes som skjerm-ID. Vi har utløst disse krokene inne i wptuts_add_screen_meta_boxes () funksjonen ovenfor. Alt som gjenstår er å koble til disse handlingene og bruke add_meta_box () funksjon.

 / * Over hele $ screen_id antas å holde skjerm-ID * / add_action ('add_meta_boxes _'. $ Screen_id, 'wptuts_add_my_meta_box'); funksjon wptuts_add_my_meta_box () add_meta_box ('my_meta_box_id', // Meta box ID __ ('Min Meta Box', 'plugin_domain'), // Meta Box Tittel 'wptuts_my_meta_box_callback', // Tilbakering definerer plugins innards $ screen_id, // Skjerm som du skal legge til meta-boksen 'normal' // Kontekst); 

Kode

Du kan laste ned en enkel admin side klasse basert på denne opplæringen fra GitHub.