Blog
Erweiterung von theme.json auf benutzerdefinierte Beitragstypen und Plugin-Ausgaben: Ein praktischer Leitfaden
Erfahren Sie, wie Sie theme.json-Einstellungen auf benutzerdefinierte Beitragstypen und Plugin-Inhalte anwenden, um ein konsistentes Design auf Ihrer WordPress-Website zu erzielen.

Zusammenfassung
Viele WordPress-Entwickler erstellen benutzerdefinierte Beitragstypen oder Plugins, die Inhalte ausgeben (z. B. Testimonials, Portfolios). Allerdings ignoriert theme.json – die zentrale Konfiguration für globale Stile – diese benutzerdefinierten Elemente standardmäßig, was zu einem uneinheitlichen Design führt. Dieser Artikel führt Sie durch die Registrierung benutzerdefinierter Beitragstypen, um theme.json-Stile zu erben, das Überschreiben von Einstellungen für bestimmte Blöcke und die Verknüpfung von Plugin-Ausgaben mit Kern-Design-Tokens. Sie erhalten Schritt-für-Schritt-Anleitungen, praktische Beispiele wie das Stylen eines 'Team Member'-CPT und Hinweise zu Leistung und Konflikten mit Drittanbietern. Am Ende können Sie sicherstellen, dass alle benutzerdefinierten Inhalte mit dem vom Editor definierten Designsystem Ihrer Site übereinstimmen.
Haben Sie schon einmal einen benutzerdefinierten Beitragstyp erstellt oder ein Plugin eines Drittanbieters integriert, nur um festzustellen, dass dessen Ausgabe das schöne Designsystem, das Sie mühsam in theme.json konfiguriert haben, völlig ignoriert? Damit sind Sie nicht allein. Standardmäßig gilt theme.json nur für WordPress-Kernblöcke und registrierte Blockstile, während benutzerdefinierte Beitragstypen und plugin-generierte Inhalte sich selbst überlassen bleiben. Dies führt typischerweise zu Inline-CSS, doppelten Schriftstapeln oder einer nicht zusammenpassenden Farbpalette, die die Benutzererfahrung beeinträchtigt. Aber es gibt einen besseren Weg: Sie können theme.json erweitern, um diese benutzerdefinierten Elemente abzudecken und so ein konsistentes, wartbares Designsystem auf Ihrer gesamten Site sicherzustellen. In diesem Leitfaden behandeln wir vier praktische Schritte, um dies zu erreichen, komplett mit Codebeispielen und praxisnahen Hinweisen.
Verständnis des theme.json-Geltungsbereichs
Bevor wir loslegen, ist es wichtig zu verstehen, dass theme.json ein Konzept von Block-Themes ist. Es definiert globale Stile, Einstellungen (wie Farbpaletten und Schriftgrößen) und blockspezifische Stile für den Block-Editor und das Frontend. Seine Reichweite ist jedoch begrenzt: Es steuert nur Blöcke, die explizit Unterstützung für theme.json-Eigenschaften über register_block_type oder das ältere add_theme_support deklarieren. Benutzerdefinierte Beitragstypen, die mit register_post_type erstellt wurden, erben diese Stile nicht automatisch, es sei denn, sie sind mit Blöcken aufgebaut oder explizit gestaltet.
Schritt 1: Registrieren benutzerdefinierter Beitragstypen mit Block-Editor-Unterstützung
Der erste Schritt besteht darin, sicherzustellen, dass Ihr benutzerdefinierter Beitragstyp den Block-Editor verwendet. Setzen Sie beim Aufrufen von register_post_type 'show_in_rest' => true und fügen Sie 'editor' im supports-Array hinzu. Dadurch wird der Block-Editor für diesen Beitragstyp aktiviert, sodass Autoren Block-Stile aus theme.json verwenden können. Hier ist ein Beispiel für einen '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' );
Wenn Sie nun einen Team-Member-Beitrag bearbeiten, sehen Sie den Block-Editor mit den globalen Stilen Ihres Themes, die auf Kernblöcke wie Absatz, Überschrift und Bild angewendet werden. Dies allein löst oft die meisten Stilprobleme. Wenn Sie eine detailliertere Kontrolle benötigen, fahren Sie mit dem nächsten Schritt fort. Für einen tieferen Einblick in die Erstellung von Block-Themes mit theme.json siehe Wie erstelle ich ein benutzerdefiniertes WordPress-Block-Theme mit theme.json.
Schritt 2: Hinzufügen benutzerdefinierter Block-Stile über theme.json
Manchmal möchten Sie bestimmte Stile auf alle Instanzen des Inhalts Ihres benutzerdefinierten Beitragstyps anwenden – zum Beispiel, um dem gesamten Beitrag eine Hintergrundfarbe oder besondere Abstände zu geben. Sie können core/post-content ansprechen oder Ihren Inhalt in einen benutzerdefinierten Gruppenblock packen und diesen über theme.json gestalten. Fügen Sie Folgendes in Ihre theme.json-Datei unter dem styles-Objekt ein:
{
"styles": {
"blocks": {
"core/post-content": {
"css": "background-color: var(--wp--preset--color--light); padding: 2rem;"
}
}
}
}
Dadurch wird dem Inhaltsbereich aller Beiträge, einschließlich Ihres Team-Member-CPT, ein heller Hintergrund und Abstand hinzugefügt. Sie können auch blockspezifische Variationen in settings.blocks definieren, um Stiloptionen im Editor bereitzustellen.
Schritt 3: Verwenden von theme.json-Benutzerdefinierten Eigenschaften für Plugin-Ausgaben
Plugins geben Inhalte oft über Shortcodes, Widgets oder benutzerdefinierte Blöcke aus. Um diese konsistent zu gestalten, nutzen Sie die CSS-Benutzerdefinierten Eigenschaften, die theme.json generiert. Wenn Ihr Theme beispielsweise eine Primärfarbe als --wp--preset--color--primary definiert, können Sie diese im CSS Ihres Plugins verwenden:
.my-plugin-button {
background-color: var(--wp--preset--color--primary);
font-size: var(--wp--preset--font-size--medium);
}
Dadurch wird sichergestellt, dass sich die Schaltfläche Ihres Plugins automatisch aktualisiert, wenn der Site-Administrator die Farbpalette in theme.json ändert. Um dies robust zu machen, verwenden Sie immer die vordefinierten CSS-Variablen anstelle von hartcodierten Werten. Wenn Ihr Plugin eigene Blöcke registriert, können Sie theme.json-Einstellungen erben, indem Sie useSetting in JavaScript verwenden oder $attributes beim PHP-Rendering übergeben, wie in Beherrschen von WordPress Dynamic Blocks beschrieben.
Schritt 4: Umgang mit dynamischen Blöcken
Für benutzerdefinierte Blöcke, die dynamische Inhalte ausgeben (z. B. ein Testimonials-Slider), müssen Sie den Block mit Block-Editor-Unterstützung registrieren und explizit mit theme.json verknüpfen. Verwenden Sie in PHP register_block_type mit $args, die 'render_callback' enthalten, und stellen Sie sicher, dass Ihre block.json-Datei 'supports' => array( 'color' => true, 'typography' => true ) setzt. In Ihrem Render-Callback können Sie dann über wp_get_global_styles() auf die globalen Stile zugreifen und diese anwenden. Beispiel:
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>';
}
Dieser Ansatz stellt sicher, dass Ihr benutzerdefinierter Block die Design-Tokens des Themes respektiert. Weitere Informationen zur Blockregistrierung finden Sie unter Robuste WordPress-Plugins erstellen.
Hinweise
Obwohl die Erweiterung von theme.json leistungsstark ist, sollten Sie auf folgende Fallstricke achten:
- Leistung: Das Hinzufügen zu vieler benutzerdefinierter Stile in
theme.jsonkann die Datei aufblähen und die CSS-Parsezeit erhöhen. Halten Sie sich an globale Einstellungen und verwenden Sie blockspezifische Stiele sparsam. - Plugin-Konflikte: Einige Plugins setzen
theme.json-Einstellungen zurück oder überschreiben sie. Testen Sie immer mit einer minimalen Plugin-Auswahl und erwägen Sie, inafter_setup_themeeinzuhaken, um Ihre Anpassungen erneut anzuwenden. - Klassische Themes: Wenn Ihr Theme den Block-Editor nicht verwendet (d. h. es ist ein klassisches Theme), hat
theme.jsoneine begrenzte Wirkung. Ziehen Sie in Betracht, zu einem Block-Theme zu migrieren oder die Funktionwp_enqueue_global_styleszu verwenden, um die Stile zu laden. - Browser-Cache: Änderungen an
theme.jsonwerden aufgrund von Caching möglicherweise nicht sofort angezeigt. Leeren Sie den Browser-Cache und verwenden Sie Versionierung für Ihr Stylesheet.
Fazit
Jetzt haben Sie eine klare Roadmap, um benutzerdefinierte Beitragstypen und Plugin-Ausgaben mit Ihrem theme.json-Designsystem harmonieren zu lassen. Der Schlüssel liegt darin, Ihren CPT mit Block-Editor-Unterstützung zu registrieren, spezifische Stile für den Beitragsinhaltsblock zu definieren, CSS-Benutzerdefinierte Eigenschaften in Plugin-Ausgaben zu verwenden und Ihre benutzerdefinierten Blöcke mit ordnungsgemäßer theme.json-Integration zu registrieren. Dieser Ansatz beseitigt Inkonsistenzen, reduziert den Wartungsaufwand und gibt Site-Administratoren die Möglichkeit, das Erscheinungsbild von einer einzigen Quelle aus zu steuern. Beginnen Sie noch heute mit der Umsetzung dieser Schritte, um Kohärenz in Ihre WordPress-Projekte zu bringen.
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