Block Inserter Filter

Beschreibung

Mit Block Inserter Filter blenden Administratoren einzelne Gutenberg-Blöcke websiteweit aus dem Block-Inserter aus – Core-Blöcke, Theme-Blöcke und Blöcke beliebiger Plugins – ohne eine Zeile Code. Das Plugin steuert, was Redakteure einfügen können; vorhandene Inhalte bleiben unberührt, und im Frontend hat es keine Auswirkung.

Funktionen

  • Übersichtliche Admin-Seite unter „Einstellungen Blöcke ausblenden“.
  • Funktioniert mit jedem registrierten Blocktyp: Core-, Theme- und Plugin-Blöcke.
  • Blöcke wahlweise nach Block-Kategorie (wie im Editor) oder nach Namensraum gruppieren.
  • Embed-Varianten (YouTube, Reddit, Vimeo, TikTok, Bluesky, …) lassen sich einzeln ausblenden.
  • Live-Suche über alle Blöcke und Embed-Varianten.
  • „Alle umschalten“ je Gruppe.
  • Schutzliste: Core-Blöcke (Absatz, Überschrift, Liste, Bild, Gruppe, Spalten) sind als Sicherheitsnetz immer verfügbar und lassen sich nicht ausblenden.
  • Vorhandene Inhalte mit ausgeblendeten Blöcken bleiben sichtbar – nur das Einfügen neuer Instanzen ist gesperrt.
  • Keine externen Abhängigkeiten, kein Tracking, keine Datenbanklast im Frontend.

Optionale GenerateBlocks-Integration

GenerateBlocks ist nicht erforderlich. Ist es installiert, ergänzt das Plugin einige Annehmlichkeiten:

  • Blöcke von GenerateBlocks und GenerateBlocks Pro werden in getrennten Gruppen aufgeführt.
  • Blöcke von GenerateBlocks Pro sind mit einem Pro-Badge gekennzeichnet.
  • Core-Blöcke, die GenerateBlocks Pro durch eine erweiterte Variante ersetzt, werden automatisch ausgeblendet, solange Pro aktiv ist, und erscheinen nach dessen Deaktivierung wieder.

Sicherheit

Mehrstufige Absicherung: Berechtigungsprüfung (manage_options), Nonce-Prüfung, Bereinigung gegen eine Freigabeliste beim Speichern, durchgängiges Escaping der Ausgabe.

Installation

  1. Lade den Plugin-Ordner nach wp-content/plugins/ hoch oder installiere die ZIP-Datei über Plugins Neues Plugin hinzufügen Plugin hochladen.
  2. Aktiviere das Plugin unter Plugins.
  3. Konfiguriere das Plugin unter Einstellungen Blöcke ausblenden.

FAQ

Werden vorhandene Beiträge zerstört, die ausgeblendete Blöcke verwenden?

Nein. Inhalte bleiben erhalten und werden im Frontend normal dargestellt. Nur das Einfügen neuer Instanzen über den Block-Inserter ist gesperrt.

Warum kann ich „Absatz“ oder „Bild“ nicht ausblenden?

Diese Blöcke sind als Sicherheitsnetz fest geschützt – ohne sie wäre der Editor praktisch unbenutzbar. Wenn du sie wirklich entfernen musst, nutze den Filter allowed_block_types_all in deinem Theme oder in einem eigenen Plugin.

Rezensionen

Zu diesem Plugin liegen noch keine Rezensionen vor.

Mitwirkende und Entwickler

„Block Inserter Filter“ ist Open-Source-Software. Folgende Menschen haben an diesem Plugin mitgewirkt:

Mitwirkende

„Block Inserter Filter“ wurde in 1 Sprache übersetzt. Danke an die Übersetzer für ihre Mitwirkung.

Übersetze „Block Inserter Filter“ in deine Sprache.

Interessiert an der Entwicklung?

Durchstöbere den Code, sieh dir das SVN-Repository an oder abonniere das Entwicklungsprotokoll per RSS.

Änderungsprotokoll

2.1.4

  • Plugin-Header: Tested up to (nur noch in readme.txt deklariert) und Author URI entfernt, wie vom WordPress.org-Plugin-Review gefordert. Keine Code-Änderungen.

2.1.3

  • Übersetzungen: Das Plugin-Paket enthält keine Übersetzungsdateien mehr (.po, .mo, .l10n.php), wie vom WordPress.org-Plugin-Review gefordert. Alle Sprachen, einschließlich Deutsch und britischem Englisch, werden über Sprachpakete von translate.wordpress.org bereitgestellt. In languages/ verbleibt nur die Vorlage .pot.

2.1.2

  • Fix: Nach dem Speichern zeigte die Einstellungsseite zwei Erfolgsmeldungen – WordPress-Core ergänzt bei Seiten unter Einstellungen selbst „Einstellungen gespeichert.“, sobald updated=1 vorhanden ist. Die eigene Meldung des Plugins ist entfernt.

2.1.1

  • UI: Jede Gruppenüberschrift zeigt, wie viele Blöcke der Gruppe derzeit ausgeblendet sind („N ausgeblendet“), live aktualisiert beim Setzen von Häkchen oder über „Alle umschalten“.
  • UI: „Alle umschalten“ wird nur bei aufgeklappter Gruppe angezeigt und ist an der zweiten Spalte der Blockliste ausgerichtet; der Button „Speichern“ je Gruppe ist linksbündig.
  • UI: Der Einleitungstext enthält keinen harten Zeilenumbruch mehr.
  • Übersetzungen: Deutsch (de_DE) und britisches Englisch (en_GB) werden mit dem Plugin ausgeliefert; weitere Sprachen (es_ES, fr_FR, it_IT, ja, nl_NL, pl_PL, pt_BR, ru_RU) werden im Entwicklungs-Repository gepflegt und über translate.wordpress.org eingereicht, wo Sprachpakete erzeugt werden.

2.1.0

  • UI: Blockgruppen (Kategorieansicht, Namensraumansicht) und der Abschnitt Embed-Varianten sind jetzt Akkordeons. Alle Gruppen starten eingeklappt; ein Klick auf die Gruppenüberschrift öffnet sie. Die Überschrift ist ein echter Button mit aria-expanded / aria-controls und funktioniert daher mit Tastatur und Screenreader. Checkboxen in eingeklappten Gruppen werden weiterhin mit dem Formular gesendet.
  • UI: Während der Suche öffnen sich Gruppen mit Treffern automatisch; wird die Suche geleert, klappen sie wieder zu.

2.0.0

  • Umbenennung: Das Plugin heißt jetzt „Block Inserter Filter“ (Slug, Ordner, Hauptdatei und Text-Domain block-inserter-filter). Der bisherige Name „Block Filter for GenerateBlocks“ war irreführend – das Plugin filtert beliebige Gutenberg-Blöcke, GenerateBlocks ist nur eine optionale Integration. WordPress deaktiviert das Plugin beim Wechsel des Ordners; aktiviere es unter Plugins erneut.
  • Präfix: Alle globalen Bezeichner von jg_gbbf_ / JG_GBBF_ / .jg-gbbf-* in jgor_bif_ / JGOR_BIF_ / .jgor-bif-* umbenannt. Eine einmalige Migration auf admin_init kopiert die Einstellungen aus den bisherigen Optionsschlüsseln (jg_gbbf_* oder gbba_* aus Versionen vor 1.5.0) nach jgor_bif_hidden_blocks und jgor_bif_hidden_embed_variations und entfernt die alten Schlüssel; Multisite-Netzwerke erhalten einen netzwerkweiten Durchlauf. Kein Datenverlust.
  • Der Slug der Einstellungsseite lautet jetzt jgor-bif-hide-blocks (options-general.php?page=jgor-bif-hide-blocks).
  • Die Deinstallation entfernt die aktuellen Schlüssel, beide Legacy-Schlüsselfamilien und die Migrationsmarkierungen.
  • Internationalisierung: Die Quellsprache aller sichtbaren Texte, des Plugin-Namens und der Beschreibung ist jetzt Englisch. Eine deutsche Übersetzung (de_DE) liegt in languages/ bei (.pot, .po, .mo, .l10n.php). WordPress 6.7 und neuer laden die mitgelieferten Dateien automatisch über den Header Domain Path; Sprachpakete von WordPress.org haben Vorrang, sobald sie existieren.
  • Aufräumarbeiten: JS-Global jgorBifEditorData, Konsolenausgaben aus admin.js entfernt, ungenutzte Lokalisierung entfernt, Tabs statt Leerzeichen in den Klassendateien, .distignore für SVN-Exporte ergänzt.
  • Fix: Setzt ein anderes Plugin allowed_block_types_all auf false (gar keine Blöcke erlaubt), wird diese Einschränkung jetzt unverändert durchgereicht, statt durch die vollständige Block-Registry abzüglich der ausgeblendeten Blöcke ersetzt zu werden.
  • Die Überschreibung des Anzeigenamens über all_plugins auf wp-admin/plugins.php entfernt. Das Plugin wird jetzt überall unter seinem echten Namen aufgeführt.
  • Fix: Das eigene Editor-Script des Plugins läuft nicht mehr auf der Einstellungsseite des Plugins, sodass die Icons ausgeblendeter Embed-Varianten dort korrekt dargestellt werden.
  • Deinstallation: Die pauschale LIKE 'gbba_%'-Bereinigung wurde entfernt; die beiden bekannten Legacy-Optionsschlüssel werden weiterhin namentlich gelöscht. Das generische vierbuchstabige Präfix hätte Optionen anderer Plugins treffen können.
  • Multisite: get_sites()-Aufrufe übergeben jetzt number => 0, sodass Netzwerke mit mehr als 100 Websites vollständig migriert und aufgeräumt werden.
  • Kompatibilität mit WordPress 7.1 deklariert (Tested up to).

1.5.1

  • Kompatibilität mit WordPress 7.0 deklariert (Tested up to). Keine Code-Änderungen.

1.5.0

  • Refactoring: Präfixschema auf jg_gbbf_ / JG_GBBF_ / .jg-gbbf-* korrigiert. Das bisherige Code-Präfix war gbba_ / GBBA_ (vom ursprünglichen Plugin-Slug generateblocks-bloecke-ausblenden) und passte nicht mehr zum aktuellen Slug gb-block-filter. Alle globalen Bezeichner – Konstanten, Klassen, Top-Level-Funktionen, Optionen, Asset-Handles, CSS-Klassen, Body-Klassen – sind entsprechend umbenannt.
  • Klassendateien in includes/ von class-gbba-*.php in class-jg-gbbf-*.php umbenannt.
  • Migration: Eine einmalige Routine auf admin_init kopiert die beiden vorhandenen Optionen gbba_hidden_blocks und gbba_hidden_embed_variations nach jg_gbbf_hidden_blocks und jg_gbbf_hidden_embed_variations (nur, wenn der neue Schlüssel noch leer ist, damit ein zwischen Update und erstem Aufruf einer Admin-Seite geschriebener Wert erhalten bleibt). Die alten Schlüssel werden anschließend gelöscht. Multisite-Installationen erhalten zusätzlich einen Netzwerkdurchlauf von der Hauptwebsite aus, damit Unterwebsites auch dann migriert werden, wenn kein Administrator sie aufruft.
  • Deinstallation: uninstall.php entfernt jetzt beide Präfixfamilien (gbba_* und jg_gbbf_*) sowie die Markierung des netzwerkweiten Durchlaufs, sodass keine Reste bleiben, selbst wenn das Plugin direkt nach dem Update gelöscht wird.

1.4.1

  • Fix für die Plugin-Check-Konformität: den Text der Upgrade Notice zu 1.4.0 gekürzt, damit er unter dem upgrade_notice_limit von 300 Zeichen bleibt. Keine Änderungen an Code oder Verhalten.

1.4.0

  • Umbenennung: Plugin-Slug, Ordnername, Hauptdatei und Text-Domain in gb-block-filter geändert; der angezeigte Plugin-Name lautet jetzt „Block-Filter für GenerateBlocks“. Vorhandene Einstellungen (ausgeblendete Blöcke, ausgeblendete Embed-Varianten) bleiben erhalten, da die Optionsnamen (Präfix gbba_) unverändert sind. WordPress deaktiviert das Plugin beim Wechsel des Slugs unter Umständen automatisch – aktiviere es dann manuell unter Plugins.
  • Die Plugin-Übersicht (wp-admin/plugins.php) zeigte das Plugin über einen eingegrenzten all_plugins-Filter als „GenerateBlocks – Block-Filter (Zusatz)“ an, sodass es direkt unter „GenerateBlocks“ einsortiert wurde. (In 1.6.0 wieder entfernt.)
  • uninstall.php: entfernt jetzt auch die zweite Option gbba_hidden_embed_variations (in v1.1.0 hinzugefügt, bisher aber nicht aufgeräumt); ergänzt eine defensive LIKE 'gbba_%'-Bereinigung, die künftige Plugin-Optionen sowie Einträge _transient_gbba_* / _transient_timeout_gbba_* abdeckt. Multisite-Schleife beibehalten.
  • readme.txt: Installation, FAQ und die älteren Changelog-Einträge (v1.0.0 – v1.3.6) ins Englische übersetzt. Nicht standardkonforme Header-Felder (Author, Author URI, Plugin URI) aus dem Readme-Header entfernt – sie gehören nur in den PHP-Plugin-Header. Den Contributors-Slug auf den WordPress.org-Benutzernamen jgorres umgestellt. Neuen Abschnitt == Upgrade Notice == ergänzt.
  • Plugin URI aus dem Header der Haupt-PHP-Datei entfernt (keine eigene Plugin-Seite).
  • languages/index.php, assets/index.php, includes/index.php und die index.php im Stammverzeichnis verwenden jetzt einen echten defined( 'ABSPATH' ) || exit;-Schutz statt des bloßen „Silence is golden“-Platzhalters.

1.3.10

  • Verhaltensänderung bei Core-Blöcken, die GenerateBlocks Pro ersetzt (derzeit core/heading und core/image): Diese werden jetzt aus dem Block-Inserter automatisch ausgeblendet, sobald GenerateBlocks Pro aktiv ist. Das frühere Verhalten aus 1.3.9 (Pro aktiv = Benutzer darf das Ausblenden selbst wählen) wurde umgekehrt, weil die Pro-Varianten die Core-Blöcke vollständig ersetzen sollen, solange Pro geladen ist. Der Block-Inserter-Filter (GBBA_Block_Filter::filter_blocks) führt jetzt die vom Benutzer konfigurierte Ausblendliste mit der automatischen Ausblendliste aus GBBA_Plugin::get_pro_replaced_blocks() zusammen und wendet beide in einem Durchgang an. Die Einstellungsseite zeigt die betroffenen Einträge als markiert und deaktiviert, mit dem neuen Badge „Pro-Variante aktiv“ und einem Tooltip, der das automatische Ausblenden erklärt. Sobald GenerateBlocks Pro deaktiviert wird, erhalten die Blöcke wieder das reguläre Badge „geschützt“ und erscheinen erneut im Inserter – ohne manuelles Aufräumen.
  • Intern: get_protected_blocks() wieder auf einen dünnen Wrapper um die Konstante PROTECTED_BLOCKS zurückgeführt (immer die vollständige Liste). Die Pro-abhängige Logik liegt jetzt ausschließlich in get_pro_replaced_blocks(), das sowohl vom Inserter-Filter als auch vom Admin-Renderer genutzt wird.

1.3.9

  • Funktion: Ist GenerateBlocks Pro aktiv, stehen die Core-Blöcke core/heading und core/image nicht mehr in der Schutzliste und lassen sich aus dem Inserter ausblenden. Diese erhalten ein neues Badge „GB Pro Variante“ (statt „geschützt“) mit einem Tooltip bei Mauszeigerkontakt, der erklärt, dass GenerateBlocks Pro eine erweiterte Variante des Blocks bereitstellt. Ist GenerateBlocks Pro nicht aktiv, bleiben beide Blöcke wie bisher geschützt und behalten das Badge „geschützt“, damit der Editor auf Installationen ohne das Pro-Plugin sicher nutzbar bleibt.
  • Intern: Direkte Verwendungen von GBBA_Plugin::PROTECTED_BLOCKS durch den neuen Helfer GBBA_Plugin::get_protected_blocks() ersetzt, der die von Pro ersetzten Einträge dynamisch aus der Schutzliste entfernt. GBBA_Plugin::is_generateblocks_pro_active() stellt die Erkennung bereit (nutzt die von GB Pro selbst definierte Konstante GENERATEBLOCKS_PRO_VERSION, kein zusätzlicher Blick in die Pluginliste).

1.3.8

  • Kritischer Fix: Jeder Block und jede Embed-Variante wird im DOM der Einstellungsseite zweimal dargestellt – einmal in der Kategorieansicht und einmal in der Namensraumansicht. Beide teilen sich name="hidden[]" (bzw. name="hidden_embed[]"), und das HTML5-Attribut hidden blendet die inaktive Ansicht zwar optisch aus, schließt ihre Eingabefelder aber nicht vom Absenden des Formulars aus. Wurden Checkboxen nur in einer Ansicht umgeschaltet, sendete die andere Ansicht daher unbemerkt den alten Zustand erneut, wodurch der Umschalter „Alle ausblenden“ / „Alle anzeigen“ defekt wirkte: Nach dem Speichern erschienen alle Checkboxen wieder markiert, obwohl sie gerade abgewählt worden waren. Das Admin-Script spiegelt jetzt jede Änderung einer Checkbox (manueller Klick oder Button „Alle umschalten“) auf die Zwillings-Checkbox mit demselben name/value in der anderen Ansicht, sodass beide Ansichten synchron bleiben und nur ein Zustand gesendet wird. Vorhandene Daten sind sicher; Benutzer, bei denen fälschlich Blöcke ausgeblendet waren, sollten die Einstellungsseite nach dem Update einmal öffnen, „Alle umschalten“ anklicken, bis die betroffenen Gruppen geleert sind, speichern und den Editor neu laden.

1.3.7

  • UX: Legacy-Blöcke bzw. reine Render-Blöcke werden auf der Admin-Seite nicht mehr aufgeführt. Manche Plugins (zum Beispiel GenerateBlocks 2.x für seinen generateblocks/container) halten einen alten Block als reinen serverseitigen Renderer registriert, damit vorhandene Beiträge nach einem Refactoring weiterhin dargestellt werden. Solche Blöcke erscheinen nie im Inserter und lassen sich daher nicht sinnvoll ausblenden; bisher wurden sie trotzdem gelistet, was zu doppelten Einträgen führte (zum Beispiel zwei Zeilen „Container“ nebeneinander – eine für den neuen Element-Block, die andere für den Legacy-Container-Renderer). Erkennungsheuristik: leeres attributes-Schema in Kombination mit fehlender Block-Kategorie. Pro-Blöcke sind nicht betroffen, da sie durchgängig über block.json registriert werden und daher immer sowohl Attribute als auch eine Kategorie besitzen.

1.3.6

  • Nachbesserung zu 1.3.5: array_map( 'sanitize_text_field', wp_unslash( $_POST[...] ) ) steht jetzt direkt im selben Ausdruck wie der Zugriff auf $_POST – WPCS wertet den Sniff InputNotSanitized zeilenweise aus, daher wurde ein Bereinigungsschritt in der Folgezeile nicht erkannt.

1.3.5

  • Konformität mit Plugin Check:
    • Den überflüssigen Aufruf von load_plugin_textdomain() in class-gbba-plugin.php entfernt – WordPress lädt Übersetzungen seit 4.6 automatisch über den Header Domain Path.
    • $_POST['hidden'] und $_POST['hidden_embed'] werden vor der Prüfung gegen die Freigabeliste jetzt zusätzlich durch array_map( 'sanitize_text_field', … ) gefiltert (behebt die Warnung InputNotSanitized).
    • Den Aufruf do_action( 'enqueue_block_editor_assets' ) mit einem eindeutigen phpcs:ignore samt Erklärung markiert – der Core-Hook wird absichtlich ausgelöst, damit andere Plugins/Themes ihre Block-Assets registrieren.
    • uninstall.php: Die lokalen Variablen der Multisite-Schleife $sites / $site in $gbba_sites / $gbba_site umbenannt (behebt die Warnung NonPrefixedVariableFound).
    • readme.txt: Kurzbeschreibung und den Block == Description == ins Englische übersetzt; den Eintrag Contributors auf ein gültiges WordPress.org-Format umgestellt.

1.3.4

  • UX: Link „Einstellungen“ in der WordPress-Pluginliste – direkter Sprung von Plugins zur Konfigurationsseite des Plugins.

1.3.3

  • UX: engeres Spaltenraster – Mindestspaltenbreite 280 px (bisher 340 px). Auf 1920-px-Monitoren ergibt das etwa 6 Spalten, auf 1440-px-Monitoren 4 Spalten.

1.3.2

  • UX: In der Kategorieansicht wird der Block-Namensraum (z. B. core/paragraph) nicht mehr als Slug-Tag angezeigt. In der Namensraumansicht und bei Embed-Varianten erscheint er weiterhin.

1.3.1

  • Fix: Block-Icons werden jetzt zuverlässig dargestellt. Auf der Einstellungsseite werden die WordPress-Core-Blöcke nun clientseitig explizit über wp.blockLibrary.registerCoreBlocks() registriert; bisher waren sie zwar lose geladen, fehlten aber in der Blocktyp-Registry.
  • Diagnosehinweis in der Browserkonsole, wenn Block-Icons nicht aufgelöst werden können.

1.3.0

  • Block-Icons werden jetzt auf der Einstellungsseite zwischen Checkbox und Blockname angezeigt – auch bei Embed-Varianten. Darstellung über wp.blockEditor.BlockIcon. Dafür werden die Block-Editor-Assets auf der Einstellungsseite geladen.

1.2.1

  • Fix: Blöcke ohne deklarierte Kategorie (zum Beispiel innere GenerateBlocks-Blöcke wie loop-item, query-page-numbers, query-no-results) landen nicht mehr unter „Ohne Kategorie“, sondern in der Gruppe ihres eigenen Namensraums.

1.2.0

  • UX: Button „Speichern“ am Ende jeder Gruppe – langes Scrollen entfällt.
  • UX: Pro-Badge nur noch einmal in der Gruppenüberschrift; überflüssige Pro-Badges je Block und das Badge in der Einleitung entfernt.
  • Statistik: Die Anzahl der ausgeblendeten Embed-Varianten wird jetzt gezählt und in der Einleitung angezeigt.

1.1.0

  • GenerateBlocks Free und GenerateBlocks Pro werden in getrennten Gruppen angezeigt (bisher zusammengefasst).
  • Neuer Abschnitt: Embed-Varianten (YouTube, Reddit, Vimeo, TikTok, Bluesky, …) lassen sich jetzt einzeln aus dem Editor entfernen. Technisch über wp.blocks.unregisterBlockVariation().
  • Filter gbba_embed_variations zum Erweitern der Variantenliste.
  • Die Live-Suche erfasst jetzt auch Embed-Varianten.

1.0.0

  • Erste Veröffentlichung.