Die Nutzung von WordPress Blocks auf die oberste Ebene beschränken
Im WordPress Block Editor können Block-Typen auf verschiedenen Ebenen eingefügt werden, einschließlich der Root-Ebene (oberste Ebene) und der Ebene von inneren Blöcken. Normalerweise können Benutzer jeden verfügbaren Block-Typ auf jeder Ebene des Block-Editors platzieren, insofern dies nicht manuell eingeschränkt wurde.
In speziellen Fällen möchte man jedoch die Verfügbarkeit eines Block-Typs beschränken, um sicherzustellen, dass er nur in einem bestimmten Kontext verfügbar ist.
In diesem Artikel soll es darum gehen, wie man einen Block-Typ nur auf der obersten Ebene, also auf dem Root-Level erlauben kann. Hierfür beschränken wir uns auf die Nutzung der block.json
-Datei, die für jeden einzelnen Block-Typen verwendet werden sollte.
In der block.json Datei, die Nutzung eines Block-Typen auf das Root-Level beschränken
Das parent
– oder ancestor
-Attribut ist eine Option in der block.json
-Datei, die definiert, welcher Block-Typ als direkter übergeordneter Block des aktuellen Block-Typs verwendet werden kann. Wenn Sie den parent
– oder ancestor
-Parameter in der block.json
-Datei verwenden, wird der Block-Typ nur als innerer Block eines bestimmten Block-Typs zugelassen.
Aber wie soll das in unserem Fall funktionieren? Schließlich möchten wir den Block-Typen auf die oberste Ebene beschränken. Was auf den allerersten Blick nicht möglich erscheint, lässt sich bei genauerer Betrachtung aber genau auf diese Art und Weise lösen. Denn WordPress definiert den Inhaltsbereich selbst über einen Block den wir als Nutzer im Editor aber nicht wahrnehmen. Hierbei handelt es sich um den core/post-content
Block.
Der core/post-content Block als Lösung
Hier ist ein Beispiel, wie wir das parent
– und ancestor
-Attribut in der block.json
-Datei verwenden können, um sicherzustellen, dass der Block-Typ nur auf der Root-Ebene des Post-Inhalts verwendet werden kann:
Was lange Zeit als nicht lösbar angesehen wurde, ist nun über einen sehr einfach Trick möglich. Wir beschränken unseren Block-Typen ganz einfach auf den core/post-content
Block und nun kann unser Block ausschließlich auf dem Root-Level eingefügt werden. Unser Block-Typ steht somit nicht mehr für die Verwendung in anderen Block-Typen zur Auswahl.