Über Web, Tech, Games, Art,
Code & Design

7. März 2023

So kann man im Gutenberg-Editor Blöcken beliebige CSS-Klassen zuweisen

Die Funktion „register_block_style“ ermöglicht es benutzerdefinierte CSS-Klassen vorhandenen Gutenberg-Blöcken zuzuweisen.

Das ermöglicht z.B. die Auswahl verschiedener Listen-Typen, Tabellen-Typen, Text-Styles u.v.m. – also alles, was mit CSS formatierbar ist direkt im Gutenberg-Editor.

Folgender Code muss hierfür in der functions.php ergänzt werden:

register_block_style(
    'core/table',
    array(
        'name'  => 'red-arrows',
        'label' => 'rote Pfeile',
    )
);Code-Sprache: PHP (php)

Jetzt kann die Klasse im Gutenberg-Editor rechts in den Block-Einstellungen ausgewählt werden.

Vorausgesetzt, dass die Klasse auch im Stylesheet definiert ist, wird im Front-end das entsprechende Ergebnis angezeigt.

Ein Blick in die Konsole zeigt, dass überraschenderweise und leider nicht die Klasse „red-arrows“ sondern die Klasse „is-style-red-arrows“ zugewiesen wird. WordPress ergänzt also das Prefix „is-style-„. Das ist bei selbstdefinierten Klassen kein Problem – wird aber zum Problem, wenn man z.B. Bootstrap-Klassen nutzen möchte.

Wenn ich z.B. einen Text-Absatz mit der Bootrap-Klasse „lead“ vergrößern möchte, funktioniert das mit folgendem Code nicht.

register_block_style(
	'core/paragraph',
    array(
        'name'  => 'lead',
        'label' => 'Introtext',
    )
);Code-Sprache: PHP (php)

Statt des erwünschten

<p class="lead">Code-Sprache: JavaScript (javascript)

wird

<p class="is-style-lead">Code-Sprache: JavaScript (javascript)

ausgegebeben.

Anscheinend gibt es leider auch keine Funktion in WordPress mit der man dieses Verhalten ändern kann.

In diesem Fall kann nur noch „Good old Friend“ jQuery helfen. 🙂 Und mit folgendem Code kann das erwünschte Ergebnis dann doch noch erreicht werden.

$('p.is-style-lead').removeClass('is-style-lead').addClass('lead');
Code-Sprache: JavaScript (javascript)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert