I dag fortsetter vi med min mini-serie på innsetting av innlegg via frontend, men i denne delen vil vi se utelukkende på hvordan man håndterer tilpassede metafelt som vi kan ha innenfor vår posttype. Så, la oss bli klare og begynne!
Vi er nå i del 3 av mineserien, og hvis du ikke har lest de andre to delene, så anbefaler jeg at du gjør det fordi vi vil plukke opp fra hvor vi sluttet. Vårt mål etter å ha fullført denne mini-serien, bør tillate brukeren å sende inn innlegg via frontenden, sammen med redigering og sending av innlegget til søppel; alt uten å være på WordPress Dashboard. Disse metodene kan brukes i både et tema eller et plugin og være svært tilpasningsdyktig for å oppnå svært avanserte og komplekse innleveringer.
Demoen og nedlastingsfilene er et fjernet tema som er opprettet for bare formålet med denne opplæringen.
Så åpne din favoritt tekstredigerer og la oss begynne!
La oss begynne med å først opprette en mappe som heter inkludere, I denne mappen vil vi opprette en fil som heter post-meta.php. Vi lager vår tilpassede meta-boks inne i denne filen. Jeg vil gå gjennom dette ganske raskt, men hvis du vil lese om alle de underverkene du kan oppnå med tilpassede meta-bokser, skrev Tammy Hart en fantastisk opplæringsserie som heter Reusable Custom Meta Boxes.
Innsiden av vår post-meta.php, Vi vil opprette et prefiks for å sikre at vi har en unik identifikator for alle feltene våre. Vi vil også begynne med å lage en matrise for å holde all informasjonen vår for å lage en tilpasset meta-boks. Følgende kode er for å opprette en ID for den tilpassede meta-boksen, sette inn en tittel, hvor meta-boksen vil vises (hvilken posttype) og feltene den vil ha:
// Field Array $ prefix = 'vsip_'; $ vsip_post_meta_box = array ('id' => 'vsip-post-meta-boks', 'title' => __ ('Tilpasset Meta', 'rammeverk'), 'side' => 'innlegg', 'kontekst' = > 'normal', 'prioritet' => 'høy', 'felt' => array (array ('name' => __ ('Custom Input One:', 'rammeverk'), 'desc' => __ Skriv inn din tilpassede meta 1 ',' ramme '),' id '=> $ prefix.'custom_one', 'type' => 'tekst'), array ('name' => __ ('Custom Input Two:', 'ram'), 'desc' => __ ('Oppgi din tilpassede meta 2', 'rammeverk'), 'id' => $ prefix.'custom_two ',' type '=>' tekst ')));
Deretter skal vi lage vår meta-boks, og vi gjør dette ved å opprette en funksjon. Innenfor denne funksjonen bruker vi WordPress-funksjonen: add_meta_box
.
Følgende kode viser hvordan vi opprettet vår meta-boks, sammen med å bruke handlingskroken add_meta_boxes
:
// Tilpasset Meta Box add_action ('add_meta_boxes', 'vsip_project_add_meta'); funksjon vsip_project_add_meta () global $ vsip_post_meta_box; add_meta_box ($ vsip_post_meta_box ['id'], $ vsip_post_meta_box ['title'], 'vsip_display_post_meta', $ vsip_post_meta_box ['side'], $ vsip_post_meta_box ['kontekst'], $ vsip_post_meta_box ['prioritet']); // END OF Function: vsip_project_add_meta
Nå som vi har opprettet vår meta-boks, sammen med å ha alle feltene satt med informasjonen vi vil lagre, må vi vise vår meta-boks. Vi gjør dette ved å opprette en annen funksjon med samme navn som vår tredje parameter i vår add_meta_box
funksjon. I vårt tilfelle lager vi en funksjon som heter: vsip_display_post_meta
.
Følgende kode får hvert felt inne i vårt utvalg som inneholder all vår informasjon og sjekker hvilken type felt den er og sender ut riktig feltype:
funksjon vsip_display_post_meta () global $ vsip_post_meta_box, $ post; // Bruk nonce for verifikasjon ekko ''; ekko '
',' | '; ekko ''; gå i stykker; ekko ' |
---|
Vi har opprettet vår tilpassede metakasse og vist innholdet. Alt vi har igjen å gjøre, er å lagre dataene når brukeren har lagt inn innhold for feltene. Vi gjør dette ved å opprette en endelig funksjon som lagrer dataene våre riktig. Koden er som følger:
// Lagre Metadata add_action ('save_post', 'vsip_post_save_data'); funksjon vsip_post_save_data ($ post_id) global $ vsip_post_meta_box; // verifiser ikke hvis (! isset ($ _ POST ['vsip_meta_box_nonce']) ||! wp_verify_nonce ($ _ POST ['vsip_meta_box_nonce'], basenavn (__ FILE__))) return $ post_id; // Sjekk autosave hvis (definert ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id; // sjekk tillatelser hvis ('side' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) return $ post_id; elseif (! current_user_can ('edit_post', $ post_id)) return $ post_id; foreach ($ vsip_post_meta_box ['fields'] som $ felt) $ old = get_post_meta ($ post_id, $ field ['id'], true); $ new = $ _POST [$ felt ['id']]; hvis ($ ny && $ ny! = $ gammel) update_post_meta ($ post_id, $ felt ['id'], $ nytt); elseif ("== $ ny && $ gammel) delete_post_meta ($ post_id, $ field ['id'], $ old); // End of Function: vsip_post_save_data
Ok, jeg vet at vi gikk gjennom det veldig fort, men fokuset på denne opplæringen er hvordan du administrerer den tilpassede metaen via frontenden. Nå som det er helt ute og vi har vår tilpassede metakasse satt opp i våre innlegg, vil vi fortsette med å sette inn feltene i vårt innlegg innlegg og å redigere de tilpassede metafeltene.
Vi vil redigere siden vår innlegg innlegg for å kompensere for våre nylig lagt til tilpassede felt. La oss gå og åpne vår mal-insert-posts.php og sett inn noen ekstra felt. Siden våre tilpassede metafelt er tekstfelter, vil vi sette inn to ekstra tekstinntastingsfelter i vårt skjema som følger:
Vi må ha det slik at brukeren klikker "Send", den vil sette inn tilpassede meta-informasjonen i de aktuelle feltene. For å gjøre dette må vi bruke WordPress-funksjonen: update_post_meta
, hva denne funksjonen gjør er å tillate oss å oppdatere postmetaen, og vi kan bare oppdatere innlegget meta når vi har opprettet et innlegg og har en ID.
Så, vi skal gå der vi bruker funksjonen: wp_insert_post
og rett over vår viderekoblingskobling er hvor vi skal sette inn vår tilpassede meta.
Følgende kode gjør vår test for å sjekke om vi har opprettet et innlegg, og så bruker vi update_post_meta
funksjon og passere POST_ID
til denne funksjonen, sammen med ID av feltet vi vil oppdatere, og til slutt verdien fra vårt skjema som vi vil legge ut til meta-boksen:
hvis ($ post_id) // Oppdater tilpasset Meta update_post_meta ($ post_id, 'vsip_custom_one', esc_attr (strip_tags ($ _ POST ['customMetaOne']))); update_post_meta ($ post_id, 'vsip_custom_two', esc_attr (strip_tags ($ _ POST ['customMetaTwo']))); // Viderekobling wp_redirect (home_url ()); exit;
Det er det! Vi har opprettet en tilpasset meta-boks, og vi har oppdatert vårt innleggsskjema for å sikre at vi målretter mot disse feltene, og de blir lagret riktig. Deretter skal vi bevege oss på hvordan du redigerer vår tilpassede meta.
Nå må vi kunne redigere den tilpassede metaen via frontenden, så vi begynner med å åpne opp vår mal-redigerings posts.php og setter inn våre to nye inntastingsfelter som vi har lagt til i vår innleggsskjema:
Deretter må vi hente vår tilpassede post-meta for det bestemte innlegget, vi gjør dette ved å bruke WordPress-funksjonen: get_post_meta
innsiden av vår WordPress Loop. Rull opp til der vi har vår WordPress Loop og sett inn følgende kode like nedenfor der vi fikk informasjonen for tittelen og innholdet vårt.
$ custom_one = get_post_meta ($ current_post, 'vsip_custom_one', true); $ custom_two = get_post_meta ($ current_post, 'vsip_custom_two', true);
Nå som vi har informasjonen om tilpasset innleggmeta, vil vi nå utstede verdiene av dette til våre inntastingsfelter i vårt skjema. Følgende kode er den oppdaterte versjonen av de to tilpassede metafeltene som vi har lagt inn:
Som du kan se fra koden vi nettopp har lagt inn, er verdiene for begge inngangene variablene i vår tilpassede meta som vi opprettet i vår WordPress Loop, du har kanskje lagt merke til at den kan skrive ut feltene våre, men når vi gjør endringer, er det ikke noe som er aktuelt oppdateringer er gjort. Dette skyldes at vi ikke har satt inn koden for å oppdatere innlegget når brukeren har klikket på oppdateringen.
Akkurat på samme måte som vi la til postmåten når du legger inn nye innlegg, vil vi gjøre dette inne i redigeringsmal, så legg til følgende kode:
hvis ($ post_id) // Oppdater tilpasset Meta update_post_meta ($ post_id, 'vsip_custom_one', esc_attr (strip_tags ($ _ POST ['customMetaOne']))); update_post_meta ($ post_id, 'vsip_custom_two', esc_attr (strip_tags ($ _ POST ['customMetaTwo']))); // Viderekobling wp_redirect (home_url ()); exit;
Det er det! Vi har gjort det! Vi er nå i stand til å lage en tilpasset meta-boks, sett inn meta med innsatsposten via frontenden sammen med redigering av metaen via frontenden.
Det er del 3 komplett, du har gjort det! Godt gjort, du er nå i stand til å sette inn innlegg, redigere og slette innlegg via forenden, sammen med å håndtere noen tilpassede meta du har.
Det er slutten av denne serien på Posting via Front End, og jeg er glad for at du bodde hos meg mens vi gikk gjennom vår reise.
Jeg vil gjerne si en stor takk for at du har brukt tid til å lese min opplæringsserie, jeg håper det hjalp. Vær så snill å legge igjen kommentarer, og jeg vil prøve mitt beste for å hjelpe og svare på dem. Du kan alltid kontakte meg direkte via nettsiden min: www.VinnySingh.co eller Twitter @VinnySinghUK.