Gutenberg macht es einfach, Inhalte mit Blöcken zu erstellen, aber manchmal brauchst du die Kontrolle darüber, welche Blöcke verfügbar sind. Vielleicht arbeitest du an einer Kundenseite und möchtest verhindern, dass sie bestimmte Blöcke verwenden. Oder du willst die Bearbeitung vereinfachen, indem du unnötige Optionen entfernst.
In diesem Leitfaden stellen wir dir verschiedene Möglichkeiten vor, wie du Gutenberg-Blöcke deaktivieren kannst:
- Verwendung der WordPress-Benutzeroberfläche (UI) zum Ausblenden von Blöcken im Inserter
- Sperren von Blöcken, damit sie nicht verschoben oder gelöscht werden können
- Blockeinschränkungen mit PHP durchsetzen, einschließlich rollenbasiertem Zugriff
Wir werden uns jedoch nicht mit der Sichtbarkeit von Blöcken (Ein- und Ausblenden von Inhalten basierend auf Bedingungen) oder dem Deaktivieren bestimmter Blockeinstellungen wie Text- oder Hintergrundfarben in theme.json
befassen. Wir werden jedoch auf das Sperren von Blöcken eingehen, da dies eng mit dem Deaktivieren von Blöcken zusammenhängt.
Alle Methoden in diesem Leitfaden funktionieren ohne Plugins und sind für jedes blockbasierte Theme anwendbar. Los geht’s!
Deaktivieren von Blöcken mit der WordPress-Benutzeroberfläche
Das Entfernen von unnötigen Blöcken vereinfacht die Bearbeitung und kann die Leistung im Backend leicht verbessern, da deaktivierte Blöcke nicht in den Speicher geladen werden.
Jeder Nutzer kann Blöcke über das Menü Einstellungen im Block-Editor deaktivieren. Dazu klickst du auf das Menü mit den drei Punkten (⋮) in der oberen rechten Ecke und öffnest die Einstellungen des Editors. Auf der Registerkarte Blöcke kannst du die Markierung eines Blocks entfernen, um ihn aus dem Block-Inserter zu entfernen.
Du kannst z. B. den Zitat-Block deaktivieren, indem du sein Häkchen entfernst (siehe unten).

Wenn du noch weiter gehen willst, kannst du eine ganze Blockkategorie deaktivieren. Wenn du z. B. die Kategorie Text deaktivierst, werden alle textbezogenen Blöcke aus dem Inserter entfernt, sodass sie nicht mehr verwendet werden können. Das kann hilfreich sein, um den Editor zu verschlanken und zu verhindern, dass Nutzer auf unnötige Blöcke zugreifen.

Deaktivieren von Blöcken mit PHP
Es gibt zwei grundlegende und sehr unterschiedliche Methoden, um die Verwendung von Blöcken in WordPress zu erlauben oder zu verhindern. Je nach deinen Bedürfnissen kannst du die Verwendung eines Blocks im Inserter entweder zulassen oder verbieten.
Beide Ansätze können mit PHP oder JavaScript umgesetzt werden, jeder mit seinen eigenen Vor- und Nachteilen. PHP ist in der Regel einfacher, wenn du Blöcke zulassen willst, während JavaScript oft effizienter ist, wenn du Blöcke verweigern willst.
Wir verwenden PHP für alle unsere Beispiele, um verschiedene Anwendungsfälle zu demonstrieren.
Blöcke zulassen (allow-listing)
Um nur bestimmte Blöcke im Inserter zuzulassen, verwendest du den folgenden Filter. Dadurch wird sichergestellt, dass nur die angegebenen Blöcke für alle Nutzer verfügbar sind:
add_filter('allowed_block_types_all', 'allowed_block_types_all_users', 10, 2 );
function allowed_block_types_all_users( $allowed_blocks, $block_editor_context ) {
return array(
'core/paragraph',
'core/heading',
'core/image',
'core/cover',
'core/list',
'core/list-item'
);
}
Dieser Code sollte in die functions.php
Datei eines Child-Themes eingefügt werden, um zu verhindern, dass Änderungen verloren gehen, wenn das Theme aktualisiert wird.
Wenn du diese Methode verwendest, musst du sicherstellen, dass alle notwendigen Child-Blöcke enthalten sind. Wenn du zum Beispiel den Block core/list
zulässt, musst du auch core/list-item
einbinden, um Fehler zu vermeiden.

Der allowed_block_types_all
Filter gibt Entwicklern die Kontrolle über die im Inserter verfügbaren Blöcke. Er nimmt zwei Parameter entgegen:
$allowed_block_types
– Ein Array oder ein Boolescher Wert, der die erlaubten Blöcke definiert (Standard: true).$block_editor_context
– Liefert Informationen über den aktuellen Status des Blockeditors, einschließlich des bearbeiteten Beitrags.
Bestimmte Blöcke für Beitragende und Autoren zulassen
Der folgende Code schränkt die verfügbaren Blöcke für Benutzer ohne die Fähigkeit publish_pages
(Beitragszahler und Autoren) ein:
add_filter('allowed_block_types_all', 'allowed_block_types_for_non_admins', 10, 2);
function allowed_block_types_for_non_admins($allowed_blocks, $block_editor_context) {
// Apply restrictions if the user does not have the 'publish_pages' capability
if (!current_user_can('publish_pages')) {
// Define the allowed blocks for users without 'publish_pages' capability
$allowed_blocks = array(
'core/paragraph',
'core/heading',
'core/image',
'core/cover',
'core/list',
'core/list-item'
);
}
return $allowed_blocks;
}
Im obigen Beispiel können Contributors und Authors nur Absatz-, Überschriften-, Bild-, Cover- und Listenblöcke verwenden.
Blöcke für bestimmte Beitragstypen und Nutzer zulassen
Der folgende Code fügt den Shortcode-Block bei der Bearbeitung einer Seite zum Inserter hinzu, lässt ihn aber für andere Beitragstypen nicht zu:
add_filter('allowed_block_types_all', 'allowed_block_types', 25, 2);
function allowed_block_types($allowed_blocks, $editor_context) {
$allowed_blocks = array(
'core/paragraph',
'core/heading',
'core/image',
'core/cover',
'core/list',
'core/list-item'
);
// Check if the editor context has a post object and if its type is 'page'
if (!empty($editor_context->post) && 'page' === $editor_context->post->post_type) {
$allowed_blocks[] = 'core/shortcode';
}
return $allowed_blocks;
}
Da Autoren, die Beiträge hinzufügen, keine Seiten erstellen oder ändern können, wird das Ergebnis nur in einem Beitrag angezeigt.
Alle Nutzer sehen nur sechs Blöcke, aber Administratoren und Redakteure sehen auch den Shortcode-Block, der nur für eine Seite verfügbar ist.

In unserem Beispiel hat das keine Auswirkung auf Autoren und Mitarbeiter, da sie standardmäßig keine neuen Seiten hinzufügen können. Durch die Verwendung eines Rollenmanager-Plugins kann diese Möglichkeit jedoch geändert werden.
Blöcke basierend auf der Post-ID zulassen
Wenn du eine Reihe von Blöcken nur für bestimmte Beiträge zulassen möchtest, kannst du dies folgendermaßen tun:
add_filter('allowed_block_types_all', 'allowed_block_types', 10, 2);
function allowed_block_types($allowed_blocks, $editor_context) {
// Check if the editor context has a post object
if (!empty($editor_context->post)) {
$post_id = $editor_context->post->ID;
// Define allowed blocks for specific post IDs
$allowed_blocks_by_post = array(
2 => array('core/paragraph', 'core/heading', 'core/image'),
3 => array('core/paragraph', 'core/heading', 'core/image')
);
// Check if the current post ID has a defined allowed blocks array
if (array_key_exists($post_id, $allowed_blocks_by_post)) {
return $allowed_blocks_by_post[$post_id];
}
}
return $allowed_blocks;
}
In diesem Beispiel sind nur Absatz-, Überschriften- und Bildblöcke für die Beitrags-IDs 2 und 3 verfügbar.

Das ist in Ordnung für eine kleine Anzahl von Post-IDs. Wenn du aber eine dynamische Situation hast, in der ständig Seiten oder Beiträge hinzugefügt werden, solltest du die Filterung nach Taxonomien und benutzerdefinierten Feldern in Betracht ziehen.
Blöcke zum Verweigern der Auflistung
Das Zulassen von Blöcken ist eine Form des Ablehnens, da nicht verfügbare Blöcke abgelehnt werden. Du kannst aber auch den umgekehrten Weg gehen, wenn du die meisten Blöcke mit Ausnahme einiger weniger zulassen willst. In diesem Beispiel sind die Blöcke „Überschrift“ und „Deckblatt“ für keinen Nutzer mehr verfügbar.
add_filter('allowed_block_types_all', 'deny_blocks');
function deny_blocks($allowed_blocks) {
// Get all registered blocks
$blocks = WP_Block_Type_Registry::get_instance()->get_all_registered();
// Disable two specific blocks
unset($blocks['core/heading']);
unset($blocks['core/cover']);
return array_keys($blocks);
}
Im Wesentlichen finden wir alle registrierten Blöcke und entfernen dann die Überschriften- und Titelblöcke.
Sei vorsichtig, wenn du denkst, dass du mit dieser Methode jeden Block aufheben kannst. Wenn ein Block – egal ob Kernblock oder nicht – bei JavaScript registriert ist, musst du ihn bei JavaScript abmelden.
Verweigerung der Registrierung ganzer Blockkategorien
Wenn du ganze Kategorien von Blöcken, wie Widgets, Einbettungen oder Themenblöcke, entfernen möchtest, kannst du diese Methode verwenden:
add_filter('allowed_block_types_all', 'disable_blocks_by_categories', 10, 2);
function disable_blocks_by_categories($allowed_blocks, $editor_context) {
// Get all registered blocks
$registered_blocks = WP_Block_Type_Registry::get_instance()->get_all_registered();
// Specify the categories to disable
$categories_to_disable = array('widgets', 'embed', 'theme');
// Initialize an array to hold allowed block names
$allowed_block_names = array();
// Loop through registered blocks
foreach ($registered_blocks as $block_name => $block_type) {
// Check if the block has categories defined
if (isset($block_type->category)) {
// If the block's category is NOT in the disabled list, allow it
if (!in_array($block_type->category, $categories_to_disable, true)) {
$allowed_block_names[] = $block_name;
}
} else {
// If the block has no category defined, allow it by default
$allowed_block_names[] = $block_name;
}
}
return $allowed_block_names;
}
Dieser Ansatz filtert ganze Kategorien von Blöcken heraus und vereinfacht den Block-Editor.

Sperren von Blöcken mit der WordPress-Benutzeroberfläche
Das Sperren eines Blocks verhindert, dass er verschoben oder gelöscht wird, lässt aber weiterhin die Bearbeitung von Inhalten zu. Jede/r Nutzer/in kann einen Block jederzeit mit der Option Sperren in der Blocksymbolleiste sperren oder entsperren.
Um einen Block zu sperren oder zu entsperren, klickst du auf die drei Punkte Einstellungen (⋮) auf dem Block, dann auf Sperren und wählst dann die Option Alle sperren, um automatisch sowohl das Verschieben als auch das Entfernen zu verhindern.

Es ist wichtig zu wissen, dass die Nutzer/innen den Inhalt und den Stil eines Blocks auch dann noch ändern können, wenn er gesperrt ist, sofern keine weiteren Einschränkungen vorgenommen werden.
Das Verhindern von Stiländerungen ist nicht allein durch die Sperrfunktion möglich. Um die Gestaltung des Blocks einzuschränken, müssen Änderungen in der theme.json
Datei vorgenommen werden.
Für Blöcke, die verschachtelte Elemente enthalten, gibt es eine zusätzliche Option, um nur den übergeordneten Block oder auch alle inneren Blöcke zu sperren. Dadurch wird sichergestellt, dass gruppierte Elemente strukturiert bleiben und gleichzeitig kontrollierte Änderungen innerhalb der Blöcke möglich sind.

Blöcke mit PHP sperren
Die WordPress-Benutzeroberfläche bietet zwar die Möglichkeit, Blöcke zu sperren, aber es gibt keine Einschränkungen für die gesamte Website. Jeder Nutzer mit Redakteursrechten kann einen Block freischalten, so dass gesperrte Inhalte leicht außer Kraft gesetzt werden können. Um Blöcke dauerhaft zu sperren, ist PHP die beste Lösung.
Mit PHP kannst du die Möglichkeit, Blöcke zu sperren und zu entsperren, komplett ausschalten und so sicherstellen, dass kein Nutzer die Beschränkungen umgehen kann. So funktionierte WordPress vor der Veröffentlichung von WordPress 5.9, als die Blocksperre eingeführt wurde.
Das Sperren von Blöcken ist in vielen Fällen nützlich, vor allem bei der Pflege strukturierter Inhalte. Indem du Blocksperren mit PHP durchsetzt, kannst du:
- die Integrität des Designs bewahren, indem du verhinderst, dass Nutzer/innen wichtige Blöcke ändern.
- verhindern, dass versehentlich Änderungen vorgenommen werden, die das Layout zerstören könnten.
- die Erstellung von Inhalten rationalisieren, indem du unnötige Optionen reduzierst.
- die Konsistenz von Mustern und Vorlagen sicherstellen, insbesondere bei Kundenprojekten.
Entfernen der Blocksperrfunktion für alle Benutzer
Das folgende PHP-Snippet deaktiviert die Blocksperre vollständig und verhindert, dass ein Benutzer Blöcke sperren oder entsperren kann:
add_filter('block_editor_settings_all', 'example_disable_block_locking', 10, 2);
function example_disable_block_locking($settings, $context) {
$settings['canLockBlocks'] = false;
return $settings;
}
Damit wird die Blocksperrfunktion vollständig aus dem Blockeditor entfernt. Die Benutzer sehen die Sperroptionen nicht mehr und niemand, unabhängig von seiner Rolle, kann Blöcke sperren oder entsperren.
Nutzer, die ihre Website bei Kinsta hosten, können Änderungen an den Theme-Dateien einfach und sicher per SFTP vornehmen, das standardmäßig für alle WordPress-Websites aktiviert ist.
Sperrung von Blöcken auf Basis von Benutzerrollen einschränken
Anstatt die Blocksperre komplett zu entfernen, kannst du auch einschränken, wer Blöcke sperren und entsperren kann. Das folgende PHP-Snippet erlaubt es nur Administratoren und Redakteuren, Blocksperren zu ändern, während Autoren und Mitwirkende keine Blöcke entsperren können, die von einem Administrator oder Redakteur gesetzt wurden.
add_filter('block_editor_settings_all', 'example_disable_block', 10, 2);
function example_disable_block ($settings, $context ) {
if (
isset( $context->post ) &&
'post' === $context->post->post_type &&
! current_user_can( 'edit_theme_options' )
) {
$settings['canLockBlocks'] = false;
$settings['codeEditingEnabled'] = false;
}
return $settings;
}
Auf diese Weise wird die Kontrolle über Blöcke auf Nutzer/innen mit der Fähigkeit edit_theme_options
beschränkt, in der Regel Administratoren/innen und Redakteure/innen. Autoren und Redakteure können keine Blöcke freischalten, die von höherrangigen Benutzern gesetzt wurden.
Außerdem ist der Zugriff auf den Code-Editor deaktiviert, damit die Benutzer/innen die Blockmarkierung nicht manuell ändern können, um die Einschränkungen zu umgehen. Auf diese Weise wird sichergestellt, dass gesperrte Blöcke unverändert bleiben, selbst für Nutzer/innen mit Programmierkenntnissen.
Zusammenfassung
Die Entscheidung, ob du Blöcke zulässt oder verbietest – oder eine Kombination aus beidem – hängt von deinen spezifischen Bedürfnissen ab. Vielleicht möchtest du bestimmte Blöcke einschränken, um das Editieren übersichtlicher zu gestalten, ein einheitliches Design zu erzwingen oder den Zugriff auf der Grundlage von Benutzerrollen zu kontrollieren.
Apropos Benutzerrollen: Die Fähigkeiten können geändert werden, um die Verwaltung von Blöcken weiter anzupassen. Das eröffnet dir noch mehr Möglichkeiten als das, was wir hier behandelt haben.
Vergiss nicht, dass WordPress sich mit der Zeit weiterentwickelt. Künftige Updates könnten neue Möglichkeiten zur Verwaltung von Blöcken einführen oder bestehende Funktionen verändern. Es ist also wichtig, mit der Entwicklung von WordPress Schritt zu halten, um sicherzustellen, dass dein Ansatz effektiv bleibt.
Suchst du nach einer sicheren und entwicklerfreundlichen Hosting-Lösung? Kinsta macht es dir leicht, deine WordPress-Dateien zu verwalten, einschließlich der Bearbeitung von Theme-Dateien über SFTP, um sichere und nahtlose Anpassungen zu gewährleisten, ohne die Stabilität deiner Website zu gefährden.