Hjemmeside » WordPress » Forstå WordPress Custom Meta Box

    Forstå WordPress Custom Meta Box

    I det forrige innlegget har vi snakket om det tilpassede feltet for WordPress, som lar deg legge til og sende ut en ny oppføring i et innlegg ved hjelp av boksen Tilpasset felt som WordPress gir i postredigeringsskjermen. Hvis du ikke er komfortabel med å bruke den egendefinerte feltboksen (vi har alle våre individuelle preferanser), er det et alternativ: du kan lage en meta-boks.

    En meta-boks er en tilpasset boks som vi skaper på egen hånd, som kan inneholder innspill eller annet interaktivt brukergrensesnitt for å legge til nye oppføringer av innlegg eller sider. Du kan bruke meta-boksen i stedet for boksen Tilpasset felt for å gjøre det samme. La oss se hvordan du lager en.

    Mer på Hongkiat.com:

    • Tilpass mediaopplastningskatalog i WordPress
    • Tilpass WordPress editor stiler
    • Tilpass “Howdy” I WordPress admin bar
    • Registrer egendefinert taksonomi for WordPress-brukere
    • Skjerm ikoner I WordPress-menyen

    Opprette en Meta Box

    WordPress providse en API-funksjon, kalt add_meta_box, som lar oss lage en meta-bok med en gang. Dette er det i sin ypperste grunnleggende form.

     funksjon add_post_reference () add_meta_box ('post-reference', 'Reference', 'referenceCallBack', 'post');  add_action ('add_meta_boxes', 'add_post_reference'); funksjon referanseCallBack () echo 'Hello World' 

    De add_meta_box tar fire parametere: ID, meta box-tittelen, en tilbakeringingsfunksjon som vil ringe ut 'Hello World' og posttypen vi vil vise. I dette tilfellet tildeler vi en ny meta-boks i en postredigeringsside (dette fungerer også med sider).

    I postredigeringsseksjonen finner du en ny boks, som følger.

    Den nye meta-boksen, som du ser ovenfor, vil vises under WYSIWYG-editoren. Hvis du vil legge til det i sidelinjen, kan du legge til «side» etter innleggsparameteren, og sammen med 'høy' hvis du vil sette den øverst på sidepanelet.

     funksjon add_post_reference () add_meta_box ('post-reference', 'Reference', 'referenceCallBack', 'post', 'side', 'high');  add_action ('add_meta_boxes', 'add_post_reference'); 

    Du vil nå finne den over publisere eske…

    Nå for å erstatte "Hello World" -teksten der inne. La oss legge til elementer som et inntastingsfelt for en ny oppføring.

    I dette eksemplet vil vi legge til to inntastingsfelt som består av en for å legge til referansenavnet og en annen for referanselink:

     funksjon referanseCallBack ($ post) wp_nonce_field ('reference_meta_box', 'reference_nonce'); $ name_value = get_post_meta ($ post-> ID, '_post_reference_name', true); $ link_value = get_post_meta ($ post-> ID, '_post_reference_link', true); ekko ''; ekko ''; ekko '

    '. 'Legg til navnet på referansen'. '

    '; ekko ''; ekko ''; ekko '

    '. Legg til lenken til referansen. ''

    ';

    Oppdater siden etter redigering, og du bør se disse to inngangene lagt til.

    De $ NAME_VALUE og $ link_value variabel vil hente oppføringene fra databasen og fylle dem inn i inntastingsfeltene. For å få oppføringene i databasen, må vi opprette en funksjon for det.

    Vi må legge til noen linjer med kode som vil fylle opp postene som er lagt inn via disse innspillene i databasen på en sikker måte. “Trygg” her betyr en legitim og autorisert oppføring (ikke den som kommer fra hackere eller annet uautorisert personell). For å lagre oppføringen må vi opprette en ny funksjon. La oss navngi funksjonen: save_post_reference, som så.

     funksjon save_post_reference ($ post_id)  ​​add_action ('save_post', 'save_post_reference'); 

    Som vi har nevnt, må vi verifisere noen ting for sikkerhetsformål:

    (1) Vi må sjekke om brukeren har evnen til å redigere et innlegg.

     hvis (! current_user_can ('edit_post', $ post_id)) return;  

    (2) Vi må også sjekk om nonce er satt.

     hvis (! isset ($ _POST ['reference_nonce'])) return;  hvis (! wp_verify_nonce ($ _POST ['reference_nonce'], 'reference_meta_box'))) return;  

    (3) Da må vi forhindre at dataene blir automatisk lagret. Lagring kan bare gjøres når “Lagre” eller “Oppdater” knappen har blitt klikket.

     hvis (definert ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;  

    (4) Vi må også sikre at våre to innganger, post_reference_name og post_reference_link, er satt og klar før vi sender inn oppføringene.

     hvis (! isset ($ _POST ['post_reference_name']) ||! isset ($ _POST ['post_reference_link'])) return;  

    (5) Og oppføringen skal være fri for eventuelle uventede tegn som kan kompromittere nettsikkerheten. For å sjekke dette kan du bruke WordPress-innebygd funksjon sanitize_text_field.

     $ reference_name = sanitize_text_field ($ _POST ['post_reference_name']); $ reference_link = sanitize_text_field ($ _POST ['post_reference_link']); 

    OK, nå er vi klare til å lagre oppføringene i databasen:

     update_post_meta ($ post_id, '_post_reference_name', $ reference_name); update_post_meta ($ post_id, '_post_reference_link', $ reference_link); 

    Nå kan du prøve det: skriv inn noe innhold i inntastingsfeltene, og klikk på “Oppdater” knappen for å lagre dem.

    Konklusjon

    Vi har nettopp opprettet en meta-boks som består av to innganger. Du kan videre utvide boksen med andre typer innganger, for eksempel radioknappen eller velg boksen. Dette eksempelet kan være veldig grunnleggende, men når du får tak i det, vil du kunne bruke denne meta-boksen til mye mer kompliserte bruksområder. Gi oss beskjed hvis du skal bruke dette og hva du skal bruke det til.