WordPress tilpassede indlægstyper er kraftfulde funktioner. Det er det, der løfter WordPress fra et ydmygt blogging-værktøj til et content management system, og giver dig den vigtige fleksibilitet, du har brug for for at oprette et tilpasset websted.

Men de kan forårsage forvirring: hvad er WordPress brugerdefinerede indlægstyper nøjagtigt? Hvordan adskiller de sig fra standardindlæg og sider? Hvordan opretter du dem? Og når du først har oprettet en tilpasset indlægstype, hvordan tilføjer du den, viser den på dit websted, og hvordan gemmes det af WordPress?

I denne artikel viser jeg dig nøjagtigt, hvordan WordPress brugerdefinerede indlægstyper fungerer. Jeg vil sammenligne dem med de indlægstyper, du muligvis er mere fortrolig med, lære dig hvordan man opretter dem og viser dig, hvordan du bruger tema skabelonfiler til at vise dem på dit websted.

Lad os komme i gang!

Hvad er tilpassede indlægstyper i WordPress?

Det er sandsynligvis lettere at forklare, hvad brugerdefinerede indlægstyper i WordPress er ved at forklare et bredere koncept: indlægstyper.

Indlægstyper er måder at kategorisere forskellige typer indhold i WordPress. Jeg antager, at du allerede er bekendt med de to mest almindelige indlægstyper: indlæg og sider. Men hvad du måske ikke ved, er, at WordPress også leveres sammen med et par andre indlægstyper.

Indlægstyper, der kommer sammen med WordPress

WordPress leveres med syv indlægstyper:

  • Indlæg
  • sider
  • Vedhæftede filer
  • revisioner
  • Navigationsmenuer
  • Tilpasset CSS
  • Ændringer

Chancen er, at du aldrig har hørt om ændringssæt, og du bruger muligvis custom CSS på dit websted, men det har ikke taget dig i betragtning, at dette kan være indlægstyper.

For de fleste WordPress-brugere- og udviklere er de eneste indlægstyper, du har brug for at bekymre dig om, de første fem: indlæg, sider, vedhæftede filer, revisioner og navigationsmenuer.

Lad os se på hver af disse indlægstyper, så vi kan forstå mere om dem.

WordPress indlægstyper: Indlæg

“Indlægget” er den indlægstype, du vil bruge mest i WordPress. Indlæg er dynamisk indhold: designet til at blive opdateret regelmæssigt. Du kan tilføje kategorier og tags til dem, hvilket betyder, at de vises på flere arkivsider, og de vises også på din startside eller din blogside. Normalt udgør dine indlæg størstedelen af ​​indholdet på dit websted.

Bemærk: I WordPress betyder “indlæg” to ting. I databasen er et indlæg et indlæg af enhver posttype, så det vil omfatte sider, vedhæftede filer og alt andet. Når de fleste af os taler om indlæg, mener vi de indlæg i vores blog, der hører til indlæggets indlægstype.

WordPress-indlægstyper: sider

Hvis du allerede har et WordPress-sted, er sider den anden indholdstype, som du er bekendt med. Det er statisk indhold, designet til at holde sig længere end indlæg og til at give information om, hvilke slags ting der ikke ændres så ofte. Gode ​​eksempler er dine kontaktoplysninger eller siden “om os” på et forretnings websted.

Sider kan ikke have kategorier eller tags og er ikke designet til at blive vist på arkivsider. I stedet får besøgende adgang til dem via din navigationsmenu.

Bemærk: på internet jargon kan en side betyde enhver form for side på dit websted. Da internettet først udviklede sig, bestod det udelukkende af statisk content, der måtte kodes direkte ved at skrive HTML. Så en “webside” kan være enhver form for side på dit websted, herunder en statisk side i WordPress-termer, en arkivside eller et indlæg. I denne artikel, når jeg henviser til sider, mener jeg siden i WordPress-termer, dvs. en statisk side. Nogle gange henviser jeg til arkivsider, men de er ikke sider i den forstand, at du opretter en side til at gemme dem. WordPress gør det for dig.

WordPress-indlægstyper: Vedhæftede filer

En vedhæftet fil er et medieelement, der er uploadet til dit websted. I WordPress-databasen er dette ikke selve mediefilen, men dataene der vedrører den. Så hver vedhæftet fil har et unikt ID og metadata som dets titel, beskrivelse, ALT-tekst og mere.

Hver vedhæftet fil har også sin egen vedhæftede side med en unik URL. Du kan finde URL’en til dette via medie-redigerings-skærmen for den vedhæftede fil:

Redigerings-skærmbilledet for vedhæftet fil i WordPress
Redigerings-skærmbilledet for vedhæftet fil i WordPress

Vedhæftede filer kan være enhver form for upload: billeder, videoer, pdf-filer og mere. Du kan få adgang til og redigere dem via Media-elementet i WordPress admin-menuen, eller du kan uploade dem direkte til indlæg / sider, når du redigerer dem. Enhver vedhæftet fil, du uploader til et indlæg, vil derefter være tilgængelig til redigering og visning via Media-menuen.

WordPress indlægstyper: Revisioner

Nu går vi videre til de lidt mere uklare indlægstyper.

Hver gang du gemmer en ny version af et indlæg, en side, en vedhæftet fil eller særligt en brugerdefineret indlægstype, opretter WordPress en revision, der afspejler den version af indlægget (eller siden osv.).

Du kan se revisioner af ethvert indlæg eller side på dit websted ved at gå til det relevante redigerings-skærmbillede og åbne fanen Dokument i højre side. Her ser du en anmeldelse, der fortæller dig, hvor mange revisioner dette indlæg har. Nedenfor kan du se et skærmbillede af et indlæg, jeg redigerer, og som i øjeblikket har fem revisioner.

Ændringer på skærmen til redigering af WordPress-indlæg
Ændringer på skærmen til redigering af WordPress-indlæg

Hvis du ikke bruger Gutenberg-editoren, kan du få adgang til revisioner ved at rulle til bunden af redigeringsskærmen og finde en liste over dem her:

Ændringer i den klassiske skærm til redigering af WordPress-indlæg
Ændringer i den klassiske skærm til redigering af WordPress-indlæg

Hvis du klikker på boksen Revisioner, føres du til en skærm, der viser dine seneste to versioner af dit indlæg. Herfra kan du gennemgå revisionerne og vende tilbage til en tidligere version af indlægget.

WordPress vil oprette en masse revisioner til dit websted over tid, hvilket betyder, at databasen vil være fuld af dem (her er Kinsta’s guide til, hvordan man håndterer revisioner for hurtigere performance)! Men revisioner er en indlægstype ligesom enhver anden, og de gemmes på samme måde – mere om det snart.

WordPress indlægstyper: Navigationsmenuer

Navigationsmenuer eller mere præcist elementerne i dine navigationsmenuer er også en indlægstype.

Hvert element i din navigationsmenu gemmes som et element i databasen. Takket være dens metadata ved WordPress, at dette er et navigationsmenu-element, nøjagtigt hvor i navigationsmenuen det skal vises, og hvor det linker til.

Du kan ikke redigere navigationsmenu-elementer på samme måde som du ville have andre indlægstyper. I stedet redigerer du dem via Customizer eller menuskærmen.

WordPress indlægsyper: Tilpasset CSS

Hvis du tilføjer tilpasset CSS via Customizer, gemmes dit arbejde ved hjælp af denne brugerdefinerede indlægstype. Et nyt indlæg (af typen “tilpasset CSS”) gemmes til brugerdefineret CSS, der vedrører hvert tema på dit websted, og WordPress bruger kun det til det aktuelt aktive tema.

WordPress indlægstyper: Changesets

Changesets ligner revisioner, men i stedet for at anvende det til indlæg, gælder de for Customizer. Når du foretager en ændring ved hjælp af Customizer, gemmes den som et changeset på en lignende måde som et kladde.

Nu hvor vi har arbejdet igennem hele spektret af WordPress indlægstyper, så lad os gå videre for at finde ud af mere om WordPress-tilpassede indlægstyper.

Forskellen mellem et indlæg og en tilpasset indlægsype

Lad os kave en hurtig opsumering: et indlæg kan være en af ​​to ting.

En indlægstype er en type indlæg (i bredere forstand), som en given indholdsartikel hører til. Og et “indlæg” er en indlægstype, ligesom “side”, “vedhæftet fil” eller en hvilken som helst tilpasset indlægstype, du registrerer (jeg ved, det er forvirrende, men jeg vil grave dybere om et minut).

På den anden side er din brugerdefinerede indlægstype ikke en type “indlæg” i betydningen et blogindlæg. Det er en type indlæg i betydningen alle indlæg (af alle indlægstyper), der er gemt i databasen.

WordPress tilpassede indlægstyper: Almindelige anvendelser

Så nu ved vi, hvad en brugerdefineret indlægstype er. Men hvornår skal du muligvis bruge en? Svaret er, når du vil tilføje indhold til dit websted, der ikke passer ind i en af ​​de indbyggede indlægstyper.

Nogle almindelige eksempler på tilpassede indlægstyper er:

Dette er nogle af de mest almindelige bruger-sager, men de er på ingen måde de eneste. Mit råd, når du beslutter dig, om du vil bruge en brugerdefineret indlægstype til en ny type af indhold, er at stille dig selv dette spørgsmål:

Vil jeg vise mit nye indhold på hovedblogsiden eller som en statisk side, eller vil jeg være i stand til at vise det på en separat arkivside?

I nogle tilfælde er det nok at bruge en kategori til at adskille dit nye indhold: måske kører du en blog og vil medtage casestudier, som du kan vise på deres egen side (ved hjælp af en “case study” -kategori, du opretter) og vises også i hovedbloggen. Men hvis du vil holde dit nye indhold adskilt fra dine blogindlæg, er det fornuftigt at oprette en brugerdefineret indlægstype til det.

Sådan gemmes indlægstyper af WordPress

Indlæg af en brugerdefineret indlægstype gemmes på samme måde som standardindlæg (og sider osv.) gemmes. Lad os se på dette mere detaljeret.

Dit WordPress-websted har et antal databasetabeller til lagring af indhold og indstillinger. Det mindste antal tabeller er 12, men dit websted kan have mere, hvis det kører Multisite, eller hvis du har et plugin installeret, der tilføjer flere tabeller.

WordPress database tabeller
WordPress database tabeller

I skærmbilledet ovenfor kan du se, at der er to tabeller, der ser ud som om de måske har noget at gøre med indlæg: wp_posts og wp_postmeta.

Tabellen wp_posts gemmer alt indholdet i dine indlæg, af alle indlægstyper. Så det betyder ikke noget, hvis vi taler om et blogindlæg, en side, en revision, en vedhæftet fil eller en brugerdefineret indlægstype: de vil alle blive gemt i denne wp_posts-table.

WordPress ved, hvilken indlægstype hvert indlæg er, fordi det vil have en værdi i feltet post_type i wp_posts-table. Denne værdi svarer til navnet på indlægstypen. Så når du tilføjer et nyt blogindlæg, tilføjer WordPress et indlæg til wp_posts-table med indlægstypen “post.” Og hvis du f.eks. Registrerer en brugerdefineret indlægstype, der kaldes “produkt,” genererer hvert nyt produkt, du opretter en linje i wp_posts-table med “produkt” som værdien i feltet post_type.

Tabellen wp_postmeta er til at gemme metadata om dine indlæg. Det har fire felter:

  • meta_id: id til dette emne i wp_postmetatable.
  • post_id: det indlæg, som dette metadataelement svarer til. Et indlæg kan have flere linjer i wp_postmeta-table.
  • meta_key: nøglen til denne bestemte type metadata. F.eks. For en statisk side kan en potentiel nøgle muligvis være site_template, som bemærker, hvilken sideskabelon der bruges.
  • meta_value: værdien for feltet. Hvis en side (for at bruge dette eksempel igen) bruger standard sideskabelonen, vil meta_value her være ‘standard’.

Så de metadata, der er gemt for et givet indlæg, vil være forskellige afhængigt af, hvilken type indlægstype det er.

Du behøver ikke at bekymre dig om, hvilke data der er gemt i wp_posts, og hvilke der er gemt i wp_postmeta: men det er nyttigt at forstå, at alle indlægstyper er gemt samme sted, da det betyder, at WordPress kan arbejde med dem alle stort set det samme vej.

Hvordan brugerdefinerede posttyper interagerer med brugerdefinerede taksonomier og brugerdefinerede felter

Før vi går videre til at se på, hvordan du registrerer en tilpasset indlægstype i WordPress, lad os identificere, hvordan en brugerdefineret indlægstype vil interagere med andre tilpassede indholdstyper, nemlig tilpassede taksonomier og brugerdefinerede felter.

Brugerdefinerede taksonomier

Taksonomier i WordPress bruges til at kategorisere indlæg af enhver indlægstype. For standardindlæg er de to anvendte taksonomier kategorier og tags.

Når du registrerer din brugerdefinerede indlægstype, kan du vælge at tildele enhver eksisterende taksonomi eller taksonomi til den. Du kan tilføje “kategori” taxonomi til det, når du registrerer taxonomien. Jeg viser dig, hvordan du gør dette kort, når jeg demonstrerer teknikken til at oprette en tilpasset posttype.

Alternativt kan du oprette helt nye taksonomier til din tilpassede indlægstype, som også er en almindelig tilgang.

Så hvis du for eksempel opretter en “product” -indlægstype til et eCommerce site, kan du muligvis oprette en “afdeling” taxonomi for at sortere dine produkter i afdelinger i din butik.

Hvis du opretter en “event” -indlægstype, kan du oprette en taksonomi af “eventtype”, som kan specificere, om dette er en koncert, en poesi læsning eller en komedie aften.

Taksonomierne, du opretter, er op til dig og afhænger af den måde, du vil sortere og vise dine indlæg fra din brugerdefinerede indlægstype.

Tilpassede felter

En anden tilpasset indholdstype, du har i WordPress, er brugerdefinerede felter, også kendt som postmetadata. Brugerdefinerede felter er yderligere metadata, som du kan tilføje til ethvert indlæg, så længe posttypen understøtter dem. Når du registrerer en brugerdefineret indlægstype, kan du inkludere support til brugerdefineret felt på denne linje:

supports => array( 'custom-fields' );

Dette sendes som en matrix, så du kan tilføje support til flere indstillinger.

Så hvis du vil tilføje metadata til din brugerdefinerede indlægstype, f.eks. størrelser eller farver i en tøjbutik med indlægget “product”, skal du bruge et brugerdefineret felt til at gøre dette.

Brugerdefinerede felter adskiller sig fra brugerdefinerede taksonomier, fordi du ikke ville bruge dem til at sende en arkivside.

Her er et eksempel på en tøjbutik. Du ville have en arkivside til hvert eksempel på en “afdeling” taxonomi, f.eks. ”Kvinder”, ”Mænd” osv. Forestil dig, at du også har et brugerdefineret felt kaldet ”Størrelse”. Du ville ikke oprette en arkivside for hver størrelse, da det ikke er noget, dine kunder forventer at se.

Følg denne regel for at hjælpe dig med at bestemme, om du skal bruge en brugerdefineret taksonomi eller et brugerdefineret felt til at tilføje flere data til dit indlæg: bliver du nødt til at vise dem på en arkivside?

Jeg viser dig, hvordan du udskriver arkivsider til din tilpassede indlægstype og tilpassede taksonomier senere.

Sådan tilføjes en tilpasset indlægstype med et plugin

Så du ved, hvad tilpassede indlægstyper er, og du ved, at du har brug for en til dit websted: hvordan tilføjer du det?

Der er to måder: ved at bruge et plugin og ved at kode det manuelt. Lad os starte med plugin-ruten.

Der er to typer plugins, du kan bruge til at registrere en tilpasset indlægstype: den første registrerer en brugerdefineret indlægstype for at tilføje funktionalitet, der følger med plugin, og den anden giver dig en grænseflade, du kan bruge til at oprette din egen indlægstype.

Det første eksempel inkluderer en række plugins inklusive e-handels-plugins, event plugins og mere. Lad os starte med et af de mest populære WordPress-plugins, WooCommerce.

Sådan bruges WooCommerce til at registrere tilpassede indlægstyper

WooCommerce er et eksempel på et plugin, der registrerer en brugerdefineret indlægstype for at arbejde. I dette tilfælde er det indlægstypen “product”.

Produkter opført i WooCommerce
Produkter opført i WooCommerce

WooCommerce registrerer også nogle tilpassede taksonomier og brugerdefinerede felter, som du kan organisere din butik, inklusive produktkategorier og produktkoder. Disse er forskellige fra de kategorier og tags, du ville bruge til dine blogindlæg.

Sådan bruges plugin til begivenhedskalender til at registrere tilpassede indlægstyper

Plugin for Event Calendar er et andet plugin, der bruger en tilpasset indlægstypen. I dette tilfælde er det indlægstypen “events”.

Events oprettet af plugin til Events Calendar
Events oprettet af plugin til Events Calendar

Plugin tilføjer en taksonomi, der er unik for begivenheder: ”event category”. Det anvender også normale tags til events, så du kan bruge de samme tags, du bruger til dine blogindlæg.

Sådan bruges WP Google Maps til at registrere tilpassede indlægstyper

Ligesom WooCommerce og The Events Calendar er WP Google Maps et WordPress kortplugin, der registrerer en brugerdefineret indlægstype til dine kort.

Et map oprettet af WP Google Maps-plugin
Et map oprettet af WP Google Maps-plugin

Indlægstypen “map” fungerer anderledes end produkt- eller event-indlægstypen i det forrige plugin, fordi du ikke ville vise en arkivside med alle dine maps: i stedet giver plugin dig en kort kode for hvert kort, du opretter, som du integrerer ind i et indlæg eller en side på dit websted. Men selvom du ikke kan se kort på samme måde, som du havde nogle andre indlægstyper, er det stadig en indlægstype.

Sådan bruges den brugerdefinerede indlægsype UI-plugin

Hvis du vil registrere din egen tilpassede indlægsype i stedet for en, der er en del af den bredere funktionalitet, der leveres af et plugin som WooCommerce, kan du bruge et plugin, der giver dig en grænseflade, der er designet til at gøre det nemt at registrere en brugerdefineret posttype.

Et sådant plugin er brugerdefineret map-UI-plugin.

The Custom Post Type UI-plugin
The Custom Post Type UI-plugin

Dette plugin giver dig mulighed for at registrere dine egne brugerdefinerede indlægstyper ved hjælp af admin-skærmbillederne uden at skulle skrive nogen kode.

Det giver dig et sæt skærme, der giver dig mulighed for at tilføje alle elementerne til at registrere en indlægstype, som du vil tilføje, når du bruger funktionen register_post_type (). For at tilføje en ny indlægstype med plugin skal du gå til CPT IU> Tilføj/rediger indlægstyper.

Tilføjelse af en indlægsype med brugerdefineret brugergrænseflade-plugin
Tilføjelse af en indlægsype med brugerdefineret brugergrænseflade-plugin

Herfra kan du tilføje en ny indlægstype eller redigere de eksisterende, du har registreret.

Du kan redigere indstillingerne for indlægstypen, eller du kan forlade dem ved standardindstillingerne. Du kan finde fuld dokumentation om alle indstillinger og indstillinger for en indlægstype i WordPress Codex.

Indstillinger for det brugerdefinerede indlægstype UI-plugin
Indstillinger for det brugerdefinerede indlægstype UI-plugin

Du kan også bruge plugin til at registrere en brugerdefineret taksonomi og til at tildele den til din nye indlægstype eller til en hvilken som helst eksisterende indlægstype. Og når du bruger plugin til at registrere en indlægstype, kan du tildele alle eksisterende taksonomier til det, mens du gør det.

Sådan bruges pods-pluginet til at registrere tilpassede indlægstyper

Pods-plugin er et andet plugin, der giver dig en grænseflade designet til at lade dig registrere en brugerdefineret indlægstype uden at skrive kode.

Pods giver dig også mulighed for at udvide dine eksisterende indlægstype. Så du kan føje ekstra felter til en eksisterende indlægstype eller taksonomi og redigere deres indstillinger.

Oprettelse af indlægstyper med Pods-plugin
Oprettelse af indlægstyper med Pods-plugin

Pods-plugin bruger en indlægstype (‘pod’) til at gemme alle dine tilpasninger, og giver dig også mulighed for at registrere dine egne indlægstyper lidt som brugerdefineret indlægstype UI-plugin, men med en grænseflade, der er designet til at lede dig gennem processen . Dette betyder, at plugin kan gøre processen lettere, men det tilføjer meget mere kode til dit websted (og data til din database), end hvis du selv kodede indlægstypen.

Alternativt, hvis du hellere ikke vil installere et plugin til at administrere processen med at registrere din indlægstype, kan du kode det selv.

Sådan registreres din egen tilpassede indlægstype i WordPress

Hvis du har det godt med at skrive kode, kan du drage fordel af funktionen register_post_type() til at registrere din tilpassede indlægstype. Dette er den mest effektive måde at gøre det på.

Bedste fremgangsmåder fortæller os at sætte kode for en brugerdefineret indlægstype i et plugin i stedet for i dit tema. Dette skyldes, at hvis du skulle ændre dit tema i fremtiden, vil du ikke miste indlægstypen og alle de indlæg, du har oprettet med denne indlægstype. Det betyder også, at hvis du opdaterer dit tema i fremtiden, vil du ikke miste din indlægstype.

Lad os arbejde gennem trinnene til at registrere din egen tilpassede indlægstype i WordPress.

Oprettelse af dit plugin

Det første trin er at oprette dit plugin. Tilføj en mappe til dit plugin i wp-content/plugins-mappen på dit udviklings- eller scenemiljø (endnu ikke dit live-site). Inden i denne mappe skal du tilføje en PHP-fil. Jeg kalder min kinsta-register-posttype.php.

Tip: Jeg kan altid lide at oprette et plugin i en mappe i stedet for bare at tilføje en plugin-fil til wp-content/plugins-mappen. På den måde, hvis jeg har brug for at tilføje flere filer til min plugin, såsom inkludere filer, scripts eller stilarter, har jeg allerede en mappe klar til at opbevare dem.

Tilføj nu den nye php-fil i den nye php-fil til din plugin:

<?php
/*
Plugin Name: Register Custom Post Types
Plugin URI: http://rachelmccollin.com
Description: Plugin to register the book post type
Version: 1.0
Author: Rachel McCollin
Author URI:http://rachelmccollin.com
Textdomain: kinsta
License: GPLv2
*/

Dette fortæller WordPress (og brugeren) nogle nøgleinformationer om plugin:

  • Hvad det hedder
  • Hvor du kan finde mere information
  • Hvad det gør
  • Versionsnummeret
  • Hvem har udviklet det, og hvor du kan finde ud af mere om dem
  • Tekstdomænet til internationalisering
  • Licensen, som altid skal være GPL.

Så dit plugin er nu konfigureret, og hvis du vil, kan du aktivere det på admin-skærmbilledet. Det vil ikke gøre noget endnu, hvis du gør det.

Opsætning af funktionen til din indlægstype

Lad os nu begynde at oprette funktionen til at registrere din indlægsype. I mit eksempel vil jeg oprette en posttype kaldet “bog”, da dette er et imaginært websted med boganmeldelser. Hvad du bruger vil naturligvis være anderledes og afhænge af, hvad du bruger din tilpassede indlægsype til.

Tilføj den følgende under den kommenterede tekst:

function kinsta_register_post_type() {

}
add_action( 'init', 'kinsta_register_post_type' );

Denne funktion vil indeholde al koden til din brugerdefinerede indlægstype. Du ønsker måske at ændre navnet for at tilføje en egen præfiks i stedet for kinsta_. Det er god praksis at bruge et præfiks på alle dine funktioner, så du ikke kolliderer med navnet på nogen funktion leveret af dit tema eller de andre plugins, du kører.

Resten af koden tilføjes i seler i denne funktion.

Definition af etiketter til din tilpassede indlægstype

Nu er det tid til at definere etiketterne til din brugerdefinerede indlægstype, inden i disse krøllede seler, tilføj dette:

$labels = array(
 'name' => __( ‘Books’, ‘kinsta’ ),
 'singular_name' => __( 'Book', ‘kinsta’ ),
 'add_new' => __( 'New Book', ‘kinsta’ ),
 'add_new_item' => __( 'Add New Book', ‘kinsta’ ),
 'edit_item' => __( 'Edit Book', ‘kinsta’ ),
 'new_item' => __( 'New Book', ‘kinsta’ ),
 'view_item' => __( 'View Books', ‘kinsta’ ),
 'search_items' => __( 'Search Books', ‘kinsta’ ),
 'not_found' =>  __( 'No Books Found', ‘kinsta’ ),
 'not_found_in_trash' => __( 'No Books found in Trash', ‘kinsta’ ),
);

Du skal ændre din, hvis din brugerdefinerede indlægstype ikke er “bog”. Der er flere mærker, du kan bruge, men jeg finder ud af, at ovenstående har tendens til at være tilstrækkelige til mine behov.

Bemærk, at jeg bruger internationalisering i mine labels, så de bliver oversat til det lokale sprog for brugere.

Definition af argumenterne for din tilpassede indlægstype

Det næste trin er at definere argumenterne, hvoraf den ene er den matrix af etiketter, vi allerede har tilføjet.

Tilføj etiketter under etiketterne og stadig inden i disse seler:

$args = array(
 'labels' => $labels,
 'has_archive' => true,
 'public' => true,
 'hierarchical' => false,
 'supports' => array(
  'title',
  'editor',
  'excerpt',
  'custom-fields',
  'thumbnail',
  'page-attributes'
 ),
 'taxonomies' => 'category',
 'rewrite'   => array( 'slug' => 'book' ),
 ‘show_in_rest’ => true
);

Lad os se på, hvad alle disse ting gør.

  • Etikette argumentet er matrixen af ​​etiketter, vi allerede har defineret.
  • 'has_archive' => true aktiverer et posttypearkiv for den tilpassede indlægstype. Dette er som standard falsk, så jeg kan lide at tilsidesætte det og give mig selv muligheden for at bruge et indlægstype-arkiv (som jeg vil vise dig, hvordan du skal bruge inden for kort tid).
  • 'public' => true muliggør, at indlægstypen kan inkluderes i søgeresultaterne og i brugerdefinerede forespørgsler. Igen er standarden falsk, og det er noget, jeg gerne vil tilsidesætte.
  • Den ‘hierarkiske’ værdi afhænger af, hvordan du vil bruge din tilpassede indlægstype. Hvis du indstiller dette til sandt, opfører posttypen sig som sider, med et hierarki muligt og forældre- og underordnede indlæg for ethvert indlæg i din indlægstype. Hvis du indstiller det til usandt, vil det opføre sig som indlæg uden et hierarki.
  • Arrayen ‘understøtter’ definerer en række funktioner i indlægstyper, som du kan have denne indlægstype-support. Jeg kan godt lide at sikre, at funktioner som fremhævede billeder og brugerdefinerede felter er tændt.
  • Argumentet ‘taxonomier’ definerer de eksisterende taksonomier, der gælder for denne indlægstype. Her bruger jeg ‘kategori’ taxonomi. Hvis du i stedet ønsker at bruge en brugerdefineret taksonomi og ikke har registreret den, skal du bare springe denne linje over og derefter registrere taksonomien til indlægstypen. Hvis du allerede har registreret en brugerdefineret taksonomi, kan du tilføje den til posten ved hjælp af denne linje.
  • Jeg bruger ‘omskrive’ -argumentet, fordi jeg vil give taxonomien et navn, der er anderledes end det, jeg vil bruge til dets snegle. Jeg vil forklare dette mere detaljeret kort.
  • ‘show_in_rest’ => true sikrer, at posttypen er tilgængelig for REST API og Gutenberg interface. Det er som standard falsk, hvilket ikke giver mening for mig – jeg vil have, at alle mine indlægstyper bruger den samme redigerings-grænseflade!

Så det er alle de argumenter, der er sat. Men vi har faktisk ikke registreret indlægstypen endnu. Tid til at ordne det.

Tilføjelse af funktionen register_post_type()

Det sidste trin er at trække alt dette sammen til funktionen register_post_type().

Under dine argumenter, og stadig inde i seler, skal du tilføje dette:

register_post_type( ‘kinsta_book', $args );

Dette registrerer indlægget ‘kinsta_book’ med de argumenter, vi allerede har defineret.

Nu finder du måske det lettere at forstå, hvorfor jeg brugte ‘omskrivning’ -argumentet før. Jeg kan godt lide at tilføje et præfiks til navnene på mine indlægstyper, så jeg kan være sikker på, at de ikke kommer i konflikt med nogen indlægstyper, der er tilføjet af nogen tredjeparts plugins, men jeg ønsker ikke, at præfixet skal offentliggøres.

Når WordPress viser et eksempel på din indlægstype som standard, bruger den indlægstypens navn i URL’en. Så min bog kaldet ‘Min vidunderlige bog’ ville have en url på mysite.com/kinsta_book/my-wonderful-book. Det vil jeg ikke, så jeg bruger det ‘omskrive’ argument til at ændre URL’en til mysite.com/book/my-wonderful-book. Ser meget bedre ud, ikke?

Gem nu din fil, og aktiver din plugin i WordPress-admin. Du vil finde ud af, at en ny indlægstype er vist i admin-menuen.

Indlægstypen "bøger" i admin-skærmbilledet
Indlægstypen “bøger” i admin-skærmbilledet

Indlægstypen er nu registreret og klar til at blive brugt på dit websted. Brug lidt tid på at tilføje nogle indlæg til det (indlæg af din brugerdefinerede indlægstype husk, ikke blogindlæg – WordPress kan blive forvirrende somme tider!) Og så ser vi på, hvordan du kan vise dine indlæg fra din tilpassede indlægstype foran. slutningen af ​​dit websted.

Sådan vises WordPress tilpassede indlægstyper på dit websted

De fleste tilpassede indlægstyper, du tilføjer til dit websted, fungerer som indlæg, hvilket betyder, at de er designet til at blive vist på arkivsider. Måske bruger du en brugerdefineret taksonomi til at vise dem, eller måske har du tilføjet “kategorien” taxonomi, som jeg har.

Alternativt, hvis du har brugt et plugin som WooCommerce, der tilføjer tilpassede indlægstyper for at føje specifik funktionalitet til dit websted, kan det plugin muligvis tilføje nogle specifikke sider (som f.eks. “Shop2 siden) designet til at udskrive din brugerdefinerede Indlægstype.

De fire indstillinger, du har til visning af tilpassede indlægstyper, er:

  • Visning af det individuelle indlæg (dvs. bogen i mit eksempel)
  • Viser arkivet med fuld Indlægstype med alle de bøger, der er anført.
  • Visning af et brugerdefineret taxonomiarkiv ved hjælp af en taxonomi, du har registreret til din tilpassede Indlægstype.
  • Integrering af indlæg fra den brugerdefinerede Indlægstype (f.eks. Bøger) i arkivet til en eksisterende taksonomi, såsom ‘kategori’, eller på hovedblogsiden.

Lad os se på hver af disse efter tur.

Advarsel! Hvis du på ethvert tidspunkt i denne proces ikke har adgang til arkiverne eller individuelle indlæg til din tilpassede indlægstype, er det fordi WordPress endnu ikke har skrevet permalinks til dem. For at løse dette skal du gå til Indstillinger> Permalinks og bare klikke på knappen Gem ændringer. Dette vil bede WordPress om at tjekke for eventuelle nye indlægstyper og oprette URL’er til dem.

Display af indlægstype arkivet

Den første mulighed, du har, er at oprette en arkivside med alle indlæg i dit brugerdefinerede indlægstype-arkiv.

Hvis du definerede ‘has_archive’ som sandt, da du registrerede indlægstypen, genererer WordPress automatisk en arkivside til din indlægstype. Du kan tilføje dette til din navigationsmenu ved hjælp af Customizer.

Føj dit arkiv til indlægstype til menuen

Åbn Customizer, og vælg indstillingen Menuer. Vælg din hovedmenu, og klik på knappen Tilføj varer for at tilføje ekstra elementer til din menu.

Tilføjelse af et menupunkt i WordPress customizer
Tilføjelse af et menupunkt i WordPress customizer

Vælg din indlægstype fra de indstillinger, der vises, og klik ikke på pilen nedad til højre for dens navn. Dette viser en liste, der inkluderer hvert af de indlæg, du har tilføjet, plus en mulighed, der i mit tilfælde kaldes Alle bøger. Klik på det, så tilføjes det til din menu.

Hvis du så klikker på det punkt i menuen, kan du redigere etiketten. Jeg foretrækker ikke at kalde min “Alle bøger”, men bare “Bøger” i stedet.

Redigering af menupunktet Bøger
Redigering af menupunktet Bøger

Bemærk, at du kun kan gøre dette via Customizer – det er ikke muligt på menuskærmen. Så sørg for at bruge Customizer til at føje dit brugerdefinerede indlægstype-earkiv til din menu.

Tilpasning af indlægstype-arkivet

WordPress bruger skabelon-hierarkiet til at identificere, hvilken skabelonfil i dit tema du skal bruge til at vise det brugerdefinerede indlægstype-earkiv.

WordPress skabelon-hierarkiet
WordPress skabelon-hierarkiet

Hvis dit tema har en archive.php-fil, bruger den den, og hvis den ikke gør det, bruger den index.php.

Hvis du vil redigere den måde, hvor det tilpassede indlægstype-earkiv udsendes, kan du oprette en skabelonfil til dit tilpassede indlægstype-earkiv.

For en bestemt brugerdefineret indlægstype skal du oprette en skabelonfil kaldet archive- $ indlægstype.php, hvor $ indlægstype er navnet på din indlægstype. Så til mine bøgers indlægstype, ville jeg oprette en fil, der hedder archive-kinsta_book.php.

Den nemmeste måde at oprette denne fil er ved at oprette en kopi af filen archive.php i dit tema. Omdøb det og rediger det, så det viser dit indlægstype-earkiv, som du vil.

Visning af et enkelt indlæg

Enkeltindlæg oprettet ved hjælp af en brugerdefineret indlægstype vises også ved hjælp af den første relevante skabelonfil, der findes i skabelon-hierarkiet.

Du kan gå lidt længere med enkeltindlæg end du kan med arkiver: Du kan ikke kun oprette en skabelonfil til indlægstypen (single- $ posttype.php), men du kan også oprette en fil til et specifikt indlæg for det indlæg skriv ved hjælp af slug til det indlæg (single- $ indlægstype-slug.php).

Så hvis jeg føjede store forventninger til mit boganmeldingssted, kunne jeg oprette en fil til alle boganmeldelser kaldet single-kinsta_book.php, eller jeg kunne oprette en målfil for den bog, kaldet single-kinsta_book-great-forventninger.php. Hvis jeg ikke oprettede nogen af ​​disse filer, ville WordPress som standard bruge single.php eller (hvis det ikke eksisterede) singular.php eller index.php.

Tilføjelse af brugerdefinerede indlægstyper på hovedblogsiden

Som standard vil din vigtigste blogside kun indeholde indlægstypen ‘indlæg’. Men hvad nu hvis du også ønskede at inkludere din brugerdefinerede indlægstyp på den side, blandet med blogindlæggene?

Du kan gøre dette ved at bruge krogen pre_get_posts i WordPress.

Tilføj dette i dit plugin, hvor du registrerede indlægstypen:

<?php
function kinsta_books_on_blog_page() {
 
 if ( $query->is_home() && $query->is_main_query() ) {
  $query->set( ‘post_type', array( ‘post’, ‘kinsta_book’ );
 }

}
add_action( 'pre_get_posts', 'kinsta_books_on_blog_page' ); ?>

Dette kontrollerer, at vi er på ‘startsiden’ (som er blogsiden, selvom det ikke er forsiden af ​​dit websted), og at hoved-forespørgslen kører (fordi du ikke ønsker at gøre dette i f.eks. en widget). I så fald tilføjer det både indlæg og bøger til forespørgslen.

Bemærk, at du skal medtage ‘indlæg’ -posttypen i arrayet såvel som den nye indlægstype.

Resumé

WordPress brugerdefinerede indlægstyper er den funktion, der løfter det fra en simpel blogplatform til et ægte content management system. De giver dig mulighed for at oprette komplekse, skræddersyede websteder, der kan fungere som butikker, reference-knudepunkter, mediewebsteder eller alt, hvad du har brug for.

Du kan tilføje tilpassede indlægstyper til dit WordPress-sted på en af ​​tre måder. Du kan bruge et plugin som WooCommerce, der registrerer en brugerdefineret indlægstype relateret til plugin-funktionaliteten. Du kan bruge et plugin som CPT UI eller Pods til at tilføje dine egne tilpassede indlægstyper. Eller du kan skrive dit eget plugin og bruge funktionen register_post_type() til at registrere indlægstypen ved hjælp af kode. Uanset hvilken metode du bruger, vil du kunne få meget mere fra dit WordPress-sted.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.