Standardwerte von Block-Attributen überschreiben

Einleitung

Wenn man den Abstandshalter-Block hinzufügt, hat er eine Standardhöhe von 100px. Standard-Styles für Block Supports wie z.B. das Spacing oder die fontSize kann ich in der theme.json festlegen, aber wie kann ich die default-Werte von Block-Attributen überschreiben?

Der passende Filter

Um die Block-Attribute zu filtern, nutzen wir den block_type_metadata Filter. Weil ich häufig mehrere Attribute in unterschiedlichen Blöcken überschreibe, arbeite ich mit einem switch-Statement. Das funktioniert natürlich auch für Nicht-Core-Blöcke. In diesem Fall wird z.B. die Größe des Icon-Blocks von Nick Diego überschrieben. Je nachdem, wie ich Icons in der Seite einsetze, macht vielleicht eine andere Größe Sinn.

function filter_block_type_metadata( $metadata ) {
	if ( empty( $metadata['name'] ) ) {
		return $metadata;
	}

	switch ( $metadata['name'] ) {
		case 'core/spacer':
			if ( isset( $metadata['attributes']['height'] ) ) {
				$metadata['attributes']['height']['default'] = 'var:preset|spacing|70';
			}
			break;
		case 'outermost/icon-block':
			if ( isset( $metadata['attributes']['width'] ) ) {
				$metadata['attributes']['width']['default'] = '32px';
			}
			break;
	}

	return $metadata;
}
add_filter( 'block_type_metadata', 'filter_block_type_metadata', 10, 1 );
Code-Sprache: PHP (php)