Der er mange grunde til at oprette custom post types. Personligt laver jeg dem altid, når en side eller et indlæg ikke længere kan dække det behov jeg har. Det kan også sagtens være, at jeg skal oprette et portfolio – og her er en custom post den rigtige løsning. Herunder finder du ud af hvorfor jeg er stor tilhænger af custom post types.
Hvad kan jeg med Custom Post Types?
Man kan bruge custom post types til en masse.
Herunder har jeg lavet en liste over de ting, som jeg har brugt det til:
- Portfolio
- Medarbejderoversigt
- Oversigt over afdelinger
- Opskrifter
- Kundeudtalelser
Jeg er sikker på at man kan finde plugins, som kan klare ovenstående uden at du skal kode én eneste linje. Men det er da lidt federe, når man kan sige, at det er noget man selv har lavet fra bunden. Udover det, så kan du også selv bestemme hvordan det skal se ud – uden at være bundet af en anden udviklers framework.
Plugin eller functions.php?
Puha – jeg vil sige at det er en vurderings sag. Jeg laver oftest selv et plugin – da jeg på den måde bedst kan holde styr på hvad jeg har på websitet. Men det kan sagtens være, at din custom post type skal bygges specielt til det tema du bruger – og her vil jeg så kode det i functions.php
I denne guide vil jeg tage udgangspunkt i, at vi laver det i functions.php
Start med selve post typen
For at lave en custom post type – så skal vi tilføje lidt kode til functions.php. Der skal egentlig ikke særlig meget til – og du kan med fordel kopiere nedenstående snippet – og rette den til, så det passer til dine behov og ønsker. Jeg forklarer koden under nedenstående snippet. Skulle der stadig være spørgsmål til koden, er du mere end velkommen til at skrive en kommentar, så skal jeg nok hjælpe dig videre.
function wptricks_recipe() { $labels = array( 'name' => 'Opskrifter', 'singular_name' => 'Opskrift', 'add_new' => 'Tilføj ny', 'add_new_item' => 'Tilføj ny opskrift', 'edit_item' => 'rediger opskrift', 'new_item' => 'Ny opskrift', 'view_item' => 'Se opskrift', 'search_items' => 'Søg opskrift', 'not_found' => 'Ingen opskrifter fundet', 'not_found_in_trash' => 'Ingen opskrifter fundet i papirkurven', 'all_items' => 'Alle opskrifter', 'featured_image' => 'Opskrift billede', 'set_featured_image' => 'Tilføj billede', 'remove_featured_image' => 'Fjern billede' ); $args = array( 'labels' => $labels, 'supports' => array( 'title', 'thumbnail', 'editor', 'custom_fields' ), 'taxonomies' => array('opskrift'), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'has_archive' => true, 'exclude_from_search' => false, 'menu_position' => 3, 'menu_icon' => 'dashicons-list-view' ); register_post_type('opskrift', $args); } add_action('init', 'wptricks_recipe');
Hvis du smider ovenstående kode i functions.php, så får du et menupunkt der hedder “opskrifter”. Jeg tænker, at linje 3-18 giver sig selv. Det er egentlig bare labels til din post-type. Du skal selvfølgelig bare rette den, så den passer til dine behov. Smid endelig en kommentar hvis du alligevel har spørgsmål til disse linjer.
Okay – videre til næste snippet:
Labels (linje 21):
Denne linje henter egentlig bare de labels, som du har angivet i linje 3-18. Grunden til at jeg har delt det op, er så du har et bedre overblik over din kode – i stedet for at smide det i et array under “labels”. Det er lidt mere teknisk at forklare dette – så det undlader jeg lige i denne artikel, da hensigten er, at du skal oprette en custom post type rimelig nemt.
Supports (linje 22):
Denne linje er super vigtig hvis du selv vil bestemme, hvilke felter skal vises under din post type. Det kan jo være, at selve indholdsfeltet ikke er relevant – så skal du selvfølgelig fjerne “editor” fra det ovenstående array. Hvis du vil vide lidt mere om hvad du kan smide i arrayet – så prøv at kigge her. Jeg har egentlig bare lavet den standard, for at vise hvordan man kan styre disse ting. Hvis du helt fjerner “Supports” fra $args arrayet – så tager WordPress alle standardfelter med.
Taxonomies (linje 28):
Denne linje kommer til at give mening, når vi når til næste punkt – “Tilføj en taxonomy”. For nu, har jeg en plan om, at min taxonomy til Opskrifter skal hedde “opskrift”. Hvis det er en custom post type om biler, kunne denne jo hedde “biler” eller “bilmærker”.
Hierarchical (linje 29):
Denne har jeg sat til “false”, da jeg ikke skal bruge hierarki i dette tilfælde. Med hierarki menes der, om der skal være mulighed for at tilføje en “Forældreside”.
Public (linje 30):
Denne linje er sat til true, da vi gerne vil have at vores opskrifter skal være synlige i søgeresultaterne på siden. Ydermere skal man kunne vælge dem, når man er ved at oprette menupunkter.
Show_ui (linje 31):
Denne er sat til true, da vil gerne vil se vores opskrifter i et overblik, ligesom f.eks. “Indlæg”
Show_in_menu (linje 32):
Denne linje giver lidt sig selv. Vil du have at “Opskrifter” skal vises i administrator-menuen? For at dette virker, så skal “show_ui” være sat til true
Has_archive (linje 33):
Denne linje er sat til true, da jeg gerne vil kunne vise alle mine opskrifter i et arkiv. Dette kræver så, at du opretter en arkiv-side i dit theme. Det du kan gøre er, at du kan duplikere den fil der hedder “archive.php” i din temamappe, og kalde den archive-opskrifter.php – da “opskrifter” er angivet som vores “post-type”. Se linje 39 i koden ovenfor
Exclude_from_search (linje 34):
Denne linje giver også sig selv. Her kan du sætte true eller false – alt efter om du vil have “opskrifter” vist i sidens søgeresultater. Dette har altså INTET med Google og andre søgemaskiner at gøre. Det er 100% internt.
Menu_position (linje 35):
Hvor i administratormenuen skal dit menupunkt vises? Leg lidt med tallene, indtil du synes det er fint. Jeg plejer at skrive 3 som standard.
Menu_icon (linje 36):
Du kan se en liste over tilgængelige ikoner her. Her kan du angive hvilket ikon der skal vises til venstre for dit menupunkt. F.eks. har “Indlæg” en tegnestift som ikon.
Kategorier og tags
Du har også mulighed for at tilføje dine egne kategorier eller tags til din custom post type. Det er en god idé at have, da dine brugere kan sortere og søge på disse, og på den måde nemmere finde frem til det rette indhold.
Det kan også hjælpe dig med at holde styr på de forskellige posts du tilføjer – det kan være at du gerne vil se alle opskrifter i kategorien “desserter” – så kan du jo bare sortere efter disse.
Koden, som du skal tilføje i functions.php
function wptricks_cats() { $labels = [ 'name' => 'Kategorier', 'singular_name' => 'Kategori', 'search_items' => 'Søg i kategorier', 'all_items' => 'Alle kategorier', 'edit_item' => 'Rediger kategori', 'update_item' => 'Opdater kategori', 'add_new_item' => 'Tilføj ny kategori', 'new_item_name' => 'Ny kategori', 'menu_name' => 'Kategorier' ]; register_taxonomy('kategori', ['opskrift'], [ 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, ]); } add_action('init', 'wptricks_cats', 0);
Labels (linje 3):
Denne linje har samme formål, som tidligere i denne artikel. Altså, at navngive de forskellige dele af kategori-delen.
Oprettelse af selve kategorien (linje 15):
Denne linje gør 2 ting.
- Den angiver hvad din kategori skal hedde (den kunne jo hedde andet end “Kategori” – det kunne være f.eks. “sværhedsgrad” o.lign.)
Hvis du vil rette dette, skal du ændre ordet “kategori” i denne funktion - Den angiver hvilken posttype denne kategori tilhører – her kan vi se at den tilhører den posttype, som vi oprettede tidligere – altså “opskrift” – Dette skal i øvrigt matche linje 39 i den første kodestump.
Hierarchial (linje 16):
Denne kan kun være en boolean – altså “true/false”.
Du kan angive, om din taksonomi må have en “forældre” – se eksempel herunder:
Du har lavet en kategori, som hedder “Dessert“.
Denne kategori kan have en række underkategorier, som f.eks.:
– Kage
– Pudding
– Is
Hvis denne er sat til false, så har du faktisk oprettet tags i stedet for kategorier. Det er den eneste forskel.
Show_admin_column (linje 19):
Dette er også en boolean (true/false).
Den tillader bare, at man kan oprette en kategori direkte inde på din post, så hvis du f.eks. har glemt en kategori, som passer til din post, så behøver du ikke at gå ud af din post, for at gå ind under “kategorier” for at oprette denne.
Hvordan opretter jeg tags?
Som nævnt ovenfor, den eneste forskel på tags og kategorier, er på linje 16 i ovenstående kodestump. Hvis denne er sat til true så har du oprettet kategorier – men hvis du sætter denne til false, så har du oprettet tags – se dette eksempel:
- ‘hierarchical’ => true | Kategorier
- ‘hierarchical’ => false | Tags
Har du brug for hjælp til custom post types?
Hvis det stadigvæk driller, eller du bare har spørgsmål til ovenstående, så er du mere end velkommen til at kontakte mig – så skal jeg nok se, om jeg kan hjælpe dig med at løse problemet.
Det er 100% gratis – og ingen spørgsmål er dumme – hellere spørge en gang for meget, end en gang for lidt. Held og lykke med kodningen.