Blogg
Utöka theme.json till anpassade inläggstyper och pluginutdata: En praktisk guide
Lär dig hur du tillämpar theme.json-inställningar på anpassade inläggstyper och plugin-innehåll för enhetlig design på din WordPress-webbplats.

Sammanfattning
Många WordPress-utvecklare bygger anpassade inläggstyper eller plugins som genererar innehåll (t.ex. vittnesmål, portföljer). Men theme.json—den centrala konfigurationen för globala stilar—ignorerar ofta dessa anpassade element som standard, vilket leder till en osammanhängande design. Den här artikeln går igenom hur du registrerar anpassade inläggstyper för att ärva theme.json-stilar, åsidosätter inställningar för specifika block och kopplar pluginutdata till kärndesigntokens. Du får steg-för-steg-instruktioner, verkliga exempel som att styla en "Team Member"-CPT, och fallgropar kring prestanda och tredjepartskonflikter. I slutet kan du säkerställa att allt anpassat innehåll matchar din webbplats redaktörsdefinierade designsystem.
Har du någonsin byggt en anpassad inläggstyp eller integrerat en tredjepartsplugin, bara för att upptäcka att dess utdata helt ignorerar det vackra designsystem du noggrant konfigurerat i theme.json? Du är inte ensam. Som standard tillämpas theme.json endast på kärnblock i WordPress och registrerade blockstilar, vilket lämnar anpassade inläggstyper och plugin-genererat innehåll att klara sig själva. Detta resulterar typiskt i inline-CSS, dubbla typsnitt eller en missmatchad färgpalett som bryter användarupplevelsen. Men det finns ett bättre sätt: du kan utöka theme.json till att omfatta dessa anpassade element, vilket säkerställer ett konsekvent och underhållbart designsystem över hela din webbplats. I den här guiden går vi igenom fyra praktiska steg för att åstadkomma detta, komplett med kodexempel och verkliga fallgropar.
Förstå theme.json:s omfattning
Innan vi börjar är det viktigt att förstå att theme.json är ett blocktema-koncept. Det definierar globala stilar, inställningar (som färgpaletter och teckenstorlekar) och blockspecifika stilar för blockredigeraren och frontend. Dess räckvidd är dock begränsad: det styr endast block som uttryckligen deklarerar stöd för theme.json-egenskaper via register_block_type eller äldre add_theme_support. Anpassade inläggstyper som skapats med register_post_type ärver inte automatiskt dessa stilar om de inte är byggda med block eller explicit stylade.
Steg 1: Registrera anpassade inläggstyper med blockredigerarstöd
Det första steget är att säkerställa att din anpassade inläggstyp använder blockredigeraren. När du anropar register_post_type, sätt 'show_in_rest' => true och inkludera 'editor' i supports-arrayen. Detta aktiverar blockredigeraren för den inläggstypen, vilket gör det möjligt för skribenter att använda blocknivåstilar från theme.json. Här är till exempel en "Team Member"-CPT:
function create_team_member_cpt() {
$args = array(
'public' => true,
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ),
'show_in_menu' => true,
'labels' => array(
'name' => 'Team Members',
'singular_name' => 'Team Member',
),
'rewrite' => array( 'slug' => 'team' ),
);
register_post_type( 'team_member', $args );
}
add_action( 'init', 'create_team_member_cpt' );
Nu när du redigerar ett team member-inlägg ser du blockredigeraren med ditt temas globala stilar tillämpade på kärnblock som Paragraph, Heading och Image. Detta löser ofta de flesta stilproblem. Om du behöver mer detaljerad kontroll, gå vidare till nästa steg. För en djupare dykning om att bygga blockteman med theme.json, se Hur man bygger ett anpassat WordPress-blocktema med theme.json.
Steg 2: Lägga till anpassade blockstilar via theme.json
Ibland vill du tillämpa specifika stilar på alla instanser av din anpassade inläggstyps innehåll—till exempel ge hela inlägget en bakgrundsfärg eller extra utfyllnad. Du kan rikta in dig på core/post-content eller slå in ditt innehåll i ett anpassat gruppblock och styla det via theme.json. Lägg till följande i din theme.json-fil under styles-objektet:
{
"styles": {
"blocks": {
"core/post-content": {
"css": "background-color: var(--wp--preset--color--light); padding: 2rem;"
}
}
}
}
Detta kommer att tillämpa en ljus bakgrund och utfyllnad på innehållsområdet för alla inlägg, inklusive din Team Member-CPT. Du kan också definiera blockspecifika varianter inuti settings.blocks för att tillhandahålla stilalternativ i redigeraren.
Steg 3: Använda theme.json anpassade egenskaper för pluginutdata
Plugins genererar ofta innehåll via kortkoder, widgetar eller anpassade block. För att styla dessa konsekvent, utnyttja CSS-anpassade egenskaper som theme.json genererar. Om ditt tema till exempel definierar en primärfärg som --wp--preset--color--primary, kan du använda den i din plugins CSS:
.my-plugin-button {
background-color: var(--wp--preset--color--primary);
font-size: var(--wp--preset--font-size--medium);
}
Detta säkerställer att när webbplatsadministratören ändrar färgpaletten i theme.json, uppdateras pluginens knapp automatiskt. För att göra detta robust, använd alltid de förinställda CSS-variablerna istället för att hårdkoda värden. Om din plugin registrerar egna block kan du dessutom ärva theme.json-inställningar genom att använda useSetting i JavaScript eller skicka $attributes i PHP-rendering, vilket beskrivs i Bemästra WordPress dynamiska block.
Steg 4: Hantera dynamiska block
För anpassade block som genererar dynamiskt innehåll (t.ex. en vittnesmålsbildspel) måste du registrera blocket med blockredigerarstöd och explicit koppla det till theme.json. I PHP, använd register_block_type med $args som inkluderar 'render_callback' och säkerställ att blockets block.json-fil har 'supports' => array( 'color' => true, 'typography' => true ). I din render callback kan du sedan komma åt de globala stilarna via wp_get_global_styles() och tillämpa dem. Till exempel:
function render_testimonial_block( $attributes, $content ) {
$styles = wp_get_global_styles();
$color = $styles['elements']['link']['color']['text'] ?? '#000';
return '<div style="color: ' . esc_attr( $color ) . ';">' . $content . '</div>';
}
Denna metod säkerställer att ditt anpassade block respekterar temats designtokens. För mer om blockregistrering, se Bygga robusta WordPress-plugins.
Fallgropar
Även om utökning av theme.json är kraftfullt, se upp med dessa fallgropar:
- Prestanda: Att lägga till för många anpassade stilar i
theme.jsonkan göra filen stor och öka CSS-tolkningstiden. Håll dig till globala inställningar och använd blockspecifika stilar sparsamt. - Plugin-konflikter: Vissa plugins återställer eller åsidosätter
theme.json-inställningar. Testa alltid med en minimal plugin-uppsättning och överväg att ansluta tillafter_setup_themeför att återinföra dina anpassningar. - Klassiska teman: Om ditt tema inte använder blockredigeraren (dvs. det är ett klassiskt tema) har
theme.jsonbegränsad effekt. Överväg att migrera till ett blocktema eller använd funktionenwp_enqueue_global_stylesför att ladda stilarna. - Browser Cache: Ändringar i
theme.jsonvisas kanske inte omedelbart på grund av cachning. Rensa webbläsarens cache och använd versionshantering för din stilmall.
Slutsats
Nu har du en tydlig vägkarta för att få anpassade inläggstyper och pluginutdata att spela bra med ditt theme.json-designsystem. Nyckeln är att registrera din CPT med blockredigerarstöd, definiera specifika stilar för inläggsinnehållsblocket, använda CSS-anpassade egenskaper i pluginutdata och registrera dina anpassade block med korrekt theme.json-integration. Denna approach eliminerar inkonsekvens, minskar underhåll och ger webbplatsadministratörer möjlighet att kontrollera utseende och känsla från en enda källa. Börja implementera dessa steg idag för att skapa enhetlighet i dina WordPress-projekt.
Sources (5)
- WordPress theme.json: How to Edit, Examples & Best Practices - Jetpack
- Best Practices – Plugin Handbook - WordPress Developer Resources
- Essential WordPress Plugin Development Best Practices - Pixel Fish
- The WordPress REST API: A Developer's Guide - WP Engine
- The Complete Newbie's Guide to theme.json in WordPress - Pootlepress