I del 1, del 2 og del 3 i vår tilpassede meta-boks mal-opplæringsserie lærte vi hvordan du lager en gjenbrukbar meta-boks som får all feltinformasjon fra en lettlest, lett å duplisere rekkefølge. Mange data er enkle å bruke ved å bare ekko meta-feltet i malen eller gjennom en funksjon, men noen av feltene er mer komplekse og krever litt mer finesse å bruke riktig. Denne opplæringen vil gi deg en grunnleggende ide om hvordan du bruker disse dataene og kan bli uttalt på utallige måter.
WordPress gir flere måter å få post-metadata på.
Den enkleste måten å vise dataene på er med the_meta ()
funksjon. Du kan slippe dette rett inn i din single.php mal, men det vil ikke gi deg de resultatene du sannsynligvis er etter. Det er en veldig bokstavelig utgang av dataene i en uordnet liste prefiks med nøkkelen til hvert felt som vist på bildet.
Den vanligste måten å få data lagret i et innleggsmetafelt er med get_post_meta ()
funksjon. Dette er en enkel måte å målrette mot et bestemt felt og lagre det i en variabel som kan brukes senere.
$ Custom_text = get_post_meta ($ post-> ID, 'custom_text', true);
Ved å bruke denne koden i single post loop skulle teksten "Some text in a basic text input" inn i variabelen $ custom_text
som deretter kan ekko eller filtreres, eller hva du vil gjøre med strengen. Når du bare jobber med et par felt, er dette trolig veien å gå, men i vårt eksempel jobber vi med 11 forskjellige felt. Kaller dem alle individuelt med denne funksjonen vil oppheve koden din unødvendig siden det er en måte å få alle dataene på en gang.
Min favoritt metode når jeg jobber med dette mange felt er å bruke get_post_custom ()
funksjon. Med denne funksjonen kan vi lagre alle meta-feltene for egendefinert innlegg i ett array og deretter hente dataene vi vil ha med matrise-nøkkelen.
$ post_meta_data = get_post_custom ($ post-> ID);
vil gi oss en matrise som ser slik ut:
Array ([custom_text] => Array ([0] => Enkelte tekst i en grunnleggende tekstinnføring) [custom_textarea] => Array ([0] => Et avsnitt eller to fra et tekstområde. elit. Donec tristique quam mi. Det er en selvsikkerhet som er en forutsetning for tristique. Det er bare en av de viktigste, og det er viktig å se på det. [Custom_select] => Array ([0] => en) [custom_radio] => Array ([0] => to) [custom_checkbox_group] => Array ([0] => a: 2: i: 0; s: 3: "en"; i: 1; s: 5: "tre";) [custom_post_id] => Array ([0] => 109) [custom_date] => Array ] [Custom_lider] => Array ([0] => 15) [custom_image] => Array ([0] => 413) [custom_repeatable] => Array ([0] => : 3: i: 0; s: 22: "tekst fra en repeterbar"; i: 1; s: 27: "mer tekst fra en repeterbar"; i: 2; s: 33: "repeterbare tekstfelt er gode! ";))
Som du kan se fra denne gruppen, lagrer WordPress hvert felt som en matrise fordi det er mulig å ha mer enn én verdi for det samme feltet. Du vil sikkert også legge merke til at noen få felt er serialisert. La oss grave mer til å håndtere dataene fra hvert felt og dekke hvordan du kan fikse det.
Tekst- og textarea-feltene er ganske enkle å håndtere. Du kan ekko dem med ett av følgende eksempler:
ekko $ post_meta_data ['custom_text'] [0]; ekko apply_filters ('the_content', $ post_meta_data ['custom_textarea'] [0]); $ custom_checkox = $ post_meta_data ['custom_checkbox'] [0]; hvis ($ custom_checkbox == 'on') do_stuff ();
Den første linjen vil bare sende strengen som-er, og den andre linjen vil konvertere linjeskiftet til avsnitt med WordPress ' innholdet
filter. Du kan også bruke disse samme metodene for velg, radio, dato og skyvefelt også.
Den siste linjen viser hvordan du kan teste for å se om en avkrysningsboks er valgt eller ikke. Hvis det er, kan du utføre ulike funksjoner, eller et hvilket som helst antall ting.
Våre avmerkingsboksgruppefelt og repeterbare felt lagrer arrayer som blir serialisert i databasen. Før vi kan utdata disse dataene, må vi unserialisere den.
$ custom_checkbox_group = unserialize ($ post_meta_data ['custom_checkbox_group'] [0]); $ custom_repeatable = unserialize ($ post_meta_data ['custom_repeatable'] [0]);
De unserialize ()
funksjon er en grunnleggende PHP-funksjon som konverterer våre data til en matrise som er enklere å bruke. Koden ovenfor gir meg to arrays som ser slik ut:
Array ([0] => en [1] => tre) Array ([0] => tekst fra en repeterbar [1] => mer tekst fra en repeterbar [2] => repeterbar tekstfelt er flott!)
Nå kan jeg gå gjennom arraysene, men jeg vil bruke dem i min produksjon. Det er viktig å merke seg at i det repeterbare feltet, hvis du også gjør det sorterbart som vårt eksempel i del 3 av vår tilpassede meta-boks mal-opplæringen, vil nøklene i arrayet automatisk lagres i størrelsesorden 0, 1, 2, 3 , etc., og ikke i den rekkefølge de ble opprinnelig oppført før sortering av dem.
ekko '
Dette eksempelet vil sende en uordnet liste over hver streng som er lagret i $ custom_repeatable
matrise.
For våre postliste- og bildefelt lagret vi en ID. Det kan være noen svært sjeldne tilfeller der du bare vil sende ut ID, men mest sannsynlig vil du bruke ID for å få mer informasjon.
$ custom_post_id = $ post_meta_data ['custom_post_id'] [0]; ekko '' .get_the_title ($ custom_post_id). ''; $ custom_image = $ post_meta_data ['custom_image'] [0]; ekko wp_get_attachment_image ($ custom_image, 'miniatyrbilde');
Denne opplæringen viser de mest grunnleggende måtene som du kan bruke dataene vi har lagret med våre gjenbrukbare tilpassede metakasser. Å kunne lagre ekstra data og bruke den i temaer og plugins åpner en helt ny verden av muligheter med WordPress. Hva vil du bruke det til?