✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Skapa anpassade inläggstyper och anpassade taxonomier i WordPress med kod

8

Det här är en handledning i hur man skapar en anpassad inläggstyp och en anpassad taxonomi i WordPress med kod. Vi ska titta på vanliga fallgropar och vilka argument som ska användas för minimal men tillräcklig skapelse. Fullständigt exempel ingår i slutet.

Var man lägger till koden

Skapande av anpassade inläggstyper (CPT) och anpassade taxonomier i WordPress kan göras i ett temas functions.phpfil eller i ett plugin. Tänk på att den anpassade posttypen och den anpassade taxonomin försvinner om du byter tema eller inaktiverar plugin-programmet. Så det är säkert att tillfälligt ta bort CPT-registreringen från temat och flytta den till ett plugin – så länge du behåller samma anpassade posttyp eller taxonomiidentifieringsslug/ID.

För att skapa (och modifiera) en CPT eller taxonomi, använd alltid kroken init. Att placera den i roten av functions.php(utanför en krok) eller någon annan krok kommer att orsaka problem.

Skapa en anpassad inläggstyp

För att skapa en anpassad inläggstyp använder du register_post_typefunktionen. Den accepterar två parametrar; först posttypidentifieraren och sedan en array med alla argument.

Inläggstypsidentifieraren är ett versionsnamn för din inläggstyp. Till exempel WordPress’ inbyggda inläggstyper identifieras inlägg och sidor som ‘ post‘ och ‘ page‘. Identifieraren måste vara unik, den måste följa en uppsättning regler (gemener, inga mellanslag etc) och inte vara en av WordPress reserverade sniglar.

Detta är vad jag har lärt mig vara minsta men fullt tillräckligt bra argument för att registrera en inläggstyp; med tanke på att det är en vanlig offentlig CPT och du vill åsidosätta alla etiketter som säger "inlägg" eller "sida" med det faktiska namnet på din CPT:

En översikt över argumenten

Var medveten om att vissa av argumenten ärver värden från andra argument. Om de inte är explicit inställda kan de som standard ha samma värde eller motsatsen som ett annat. Flera argument ärver samma eller motsatta värde av argumentet public. Läs dokumentationen för att se vad standardvärdet är för varje argument och om du behöver åsidosätta det.

Om du har det bra med att ha texter i admin som refererar till din inläggstyp som "inlägg" eller "sida", kan du hoppa över att definiera etikettargumenten. Du kommer förmodligen att klara dig med endast label(pluralnamn) och inuti labelsarrayen bara singular_name(singularnamn).

Om du inte uttryckligen ställer in show_in_resttill sant kommer din anpassade pos-typ att använda den gamla klassiska redigeraren. Om du vill använda Gutenberg editor för din anpassade inläggstyp måste du ställa in show_in_resttill true.

Argumentet supportstalar om vilka element som är tillgängliga när du redigerar ett inlägg i din inläggstyp. Som ett minimum vill du förmodligen ha titeln, redigeraren och den utvalda inläggsbilden.

Argumentet rewritemed ett minimum av array-element slugsäger åt WordPress att skriva om alla singulära inlägg av din inläggstyp för att använda denna prefix-slug. I exemplet ovan skulle ett enskilt bokinlägg få en URL som; " http://example.com/book/i-robot/ ". Om du är intresserad av hur man lägger till en permalänkregelinställning i admin för att tillåta temaanvändare att själva bestämma denna snigel, ta en titt på det här inlägget.

Argumentet för menyikonen (menu_icon) kan vara någon av följande Dashicons, eller så kan du lämna den tom för att behålla standardinställningen. Standard är samma ikon som Inlägg. Det är dock en bra idé att tydligt separera dina anpassade inläggstyper.

Menyposition (menu_position) låter dig bestämma positionen för din anpassade inläggstyp i admin-menyn. Dokumentationen listar alla adminmenypositioner, så att du kan justera; position 5 är precis efter "Inlägg".

Det finns ett annat argument (taxonomies) för att koppla en taxonomi till posttypen. Vi kommer att gå igenom hur man lägger till en anpassad taxonomi senare i det här inlägget. För att lägga till taxonomier till din inläggstyp, lägg till detta argument till ovanstående array;

En anteckning om permalänkar och 404 inte hittade fel

När du har lagt till din kod för att registrera en anpassad inläggstyp kommer du att märka att om du tittar på ett enskilt inlägg kommer det att returnera felet "404 inte hittat". Detta beror på att du behöver "uppdatera permalänkar".

Gå till Inställningar > Permalänkar och klicka bara på knappen "Spara ändringar" (du behöver inte ändra något).

Tänk på att när du ändrar rewriteattributet måste du uppdatera permalänkar igen.

Skapa en anpassad taxonomi

En anpassad taxonomi kan kopplas till en av WordPress inläggstyper (inlägg, sidor) eller till en anpassad inläggstyp. Du kan också koppla flera taxonomier till en inläggstyp. När du registrerar en taxonomi måste du ange den eller de inläggstyper du vill att den ska bifogas.

En taxonomi kan antingen vara hierarkisk (som inläggskategorier där du kan skapa en trädbaserad struktur) eller taggbaserad (som posttaggar). Detta är egentligen det enda du behöver känna till i förväg, med undantag för dess identifierarsnigel. Precis som med CPT:er måste den identifierande snigeln till en taxonomi vara unik och följa en uppsättning regler.

För att registrera en anpassad taxonomi använder du register_taxonomyfunktionen. Den register_taxonomyaccepterar den taxonomin unika identifierarens slug som första argument, en array av posttyper att koppla den till som andra, och slutligen en array med resten av argumenten. Det finns många argument, men detta är vad jag har upplevt vara det minsta men tillräckligt för att registrera en anpassad taxonomi (detta lägger till en taggtyp/icke-hierarkisk taxonomi):

Det rekommenderas att lägga till ett funktionsanrop direkt efter register_taxonomy, för att se till att det blir ordentligt "fäst" till CPT:n register_taxonomy_for_object_type. Definiera din taxonomi som första argument och CPT som andra:

register_taxonomy_for_object_type('book_author', 'book');

På samma sätt som posttypen ovan, register_taxonomyaccepterar många fler argument, och många av dessa ärver eller beror på värdet av andra argument. Läs dokumentationen för att se vad standardvärdet är för varje argument och om du behöver åsidosätta det.

En översikt över argumenten

Om du är bra med att ha texter som refererar till din taxonomi som "tagg" (om hierarkisk är falsk) eller "kategori" (om hierarkisk är sant), kan du förmodligen hoppa över hela labelsarrayen med undantag för kanske singular_name.

Det show_admin_columnär praktiskt för att lägga till en kolumn som visar de associerade termerna i din taxonomi på din CPT-administratörsskärm. Precis som i Inlägg ser du en kolumn som visar associerade kategorier. Detta argument är standardinställt på false(visa inte kolumn), så jag gillar att åsidosätta det.

Att ställa in show_in_resttill sant är nödvändigt för att ha din taxonomi synlig i Postedit i Gutenberg-redigeraren, eftersom Gutenberg förlitar sig på REST API.

På samma sätt som med anpassade inläggstyper kommer du förmodligen att få "404 not found"-fel på din anpassade taxonomi. Gå till Inställningar > Permalänkar och klicka bara på knappen "Spara ändringar".

Fullständig exempelkod

Här är ett fullständigt exempel på att skapa en CPT för böcker och bifoga två anpassade taxonomier; genre (hierarkisk) och bokförfattare (tagg).

Inspelningskälla: awhitepixel.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer