Block-Stile von WordPress-Core-Blöcken entfernen

Einige Core-Blöcke kommen mit zusätzlichen Block-Stilen daher, wie etwa der Zitat-Block, der neben dem Standard-Stil noch einen großen Stil hat. Wenn diese Core-Block-Stile nicht erwünscht sind, können sie seit WordPress 5.8 mit einem kleinen Code-Snippet entfernt werden.

In WordPress 5.8 wurde der block_type_metadata-Filter eingefügt, mit dem der Inhalt der block.json-Dateien gefiltert werden kann, bevor sie von WordPress verarbeitet wird. Alle Core-Blöcke nutzen je eine block.json zur Definition der Block-Metadaten, wozu auch Block-Stile gehören.

Für den Zitat-Block sieht der Inhalt der JSON-Datei auszugsweise so aus:

{
	"name": "core/quote",
	// […]
	"styles": [
		{
			"name": "default",
			"label": "Default",
			"isDefault": true
		},
		{ "name": "large", "label": "Large" }
	]
	// […]
}Code-Sprache: JSON / JSON mit Kommentaren (json)

In unserer Funktion, die wir an den block_type_metadata-Filter anhängen, brauchen wir dann nur zu prüfen, ob der Block-Bezeichner mit dem core/-Präfix anfängt und ob es styles gibt. Falls ja, entfernen wir die und haben damit alle Block-Stile von Core-Blöcken entfernt.

Der Code dafür sieht wie folgt aus:

/**
 * Remove all core block styles.
 * 
 * @param array $metadata Array of block.json metadata.
 * 
 * @return array Modified metadata.
 */
add_filter( 'block_type_metadata', function( $metadata ) {
    if ( strpos( $metadata['name'], 'core/' ) !== 0 ) {
        // No core block.
        return $metadata;
    }

    if ( empty( $metadata['styles'] ) ) {
        // No block styles.
        return $metadata;
    }

    unset( $metadata['styles'] );

    return $metadata;
} );Code-Sprache: PHP (php)

Erwähnungen

Schreibe einen Kommentar

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

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)