{"id":369824,"date":"2026-09-28T14:23:48","date_gmt":"2026-09-28T14:23:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/block-inserter-filter\/"},"modified":"2026-09-28T14:23:20","modified_gmt":"2026-09-28T14:23:20","slug":"block-inserter-filter","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/block-inserter-filter\/","author":8232116,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.4","stable_tag":"2.1.4","tested":"7.1.2","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Block Inserter Filter","header_author":"J\u00f6rn Gorres","header_description":"Hides individual Gutenberg blocks and embed variations from the block inserter, site-wide. Configurable per block by administrators, with optional GenerateBlocks integration.","assets_banners_color":"ffffff","last_updated":"2026-09-28 14:23:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.4":{"tag":"2.1.4","author":"jgorres","date":"2026-09-28 14:23:20","revision":3717356}},"upgrade_notice":{"2.1.4":"<p>Plugin header cleanup only. No functional changes.<\/p>","2.1.3":"<p>Translation files are no longer bundled; translations are delivered as language packs from translate.wordpress.org. No functional changes.<\/p>","2.1.2":"<p>Removes a duplicate &quot;Settings saved.&quot; notice. No functional changes.<\/p>","2.1.1":"<p>Group headers show the number of hidden blocks; &quot;Toggle all&quot; appears only in expanded groups. No functional changes to filtering.<\/p>","2.1.0":"<p>Block groups are now collapsible accordions, all collapsed by default. No functional changes to filtering.<\/p>","2.0.0":"<p>Renamed to &quot;Block Inserter Filter&quot; with a new slug and option prefix. Settings migrate automatically; reactivate the plugin after the update. English source strings with German, French and Spanish translations. Fixes and WordPress 7.1 compatibility.<\/p>","1.5.1":"<p>Maintenance release: declares WordPress 7.0 compatibility. No functional changes.<\/p>","1.5.0":"<p>Internal refactor: prefix scheme corrected from <code>gbba_<\/code> (legacy, from old plugin slug <code>generateblocks-bloecke-ausblenden<\/code>) to <code>jg_gbbf_<\/code>. A one-shot migration copies your existing hidden-block settings to the new option keys, no data loss. No user-visible changes.<\/p>","1.4.1":"<p>Plugin Check fix: shortened the 1.4.0 Upgrade Notice block to satisfy the <code>upgrade_notice_limit<\/code> sniff (max 300 characters). No functional changes.<\/p>","1.4.0":"<p>Slug renamed to <code>gb-block-filter<\/code>. Existing settings preserved. The plugins overview shows the plugin as <code>GenerateBlocks \u2013 Block-Filter (Zusatz)<\/code>, sorting it next to GenerateBlocks. WordPress may auto-deactivate during the rename \u2014 reactivate manually under Plugins.<\/p>","1.3.10":"<p>Auto-hides <code>core\/heading<\/code> and <code>core\/image<\/code> from the block inserter as soon as GenerateBlocks Pro is active, because the Pro variants fully replace those Core blocks while Pro is loaded.<\/p>","1.3.0":"<p>Block icons are now displayed in the settings page next to each block name. No data migration required.<\/p>","1.1.0":"<p>Adds an &quot;Embed variations&quot; section so individual embed providers (YouTube, Reddit, Vimeo, \u2026) can be removed from the editor. No data migration required.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3717356,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3717356,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3717356,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3717356,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.4"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[83,148857,4121,148076,154938],"plugin_category":[],"plugin_contributors":[264344],"plugin_business_model":[],"class_list":["post-369824","plugin","type-plugin","status-publish","hentry","plugin_tags-admin","plugin_tags-block-editor","plugin_tags-blocks","plugin_tags-gutenberg","plugin_tags-inserter","plugin_contributors-jgorres","plugin_committers-jgorres"],"banners":{"banner":"https:\/\/ps.w.org\/block-inserter-filter\/assets\/banner-772x250.png?rev=3717356","banner_2x":"https:\/\/ps.w.org\/block-inserter-filter\/assets\/banner-1544x500.png?rev=3717356","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/block-inserter-filter\/assets\/icon-128x128.png?rev=3717356","icon_2x":"https:\/\/ps.w.org\/block-inserter-filter\/assets\/icon-256x256.png?rev=3717356","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Block Inserter Filter lets administrators hide individual Gutenberg blocks from the block inserter for the whole site \u2014 Core blocks, theme blocks and blocks of any plugin \u2014 without writing any code. It controls what editors can <em>insert<\/em>; it does not touch existing content and has no effect on the front end.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Clear admin screen under \"Settings \u2192 Hide Blocks\".<\/li>\n<li>Works with every registered block type: Core, theme and plugin blocks.<\/li>\n<li>Group blocks either by block category (as in the editor) or by namespace.<\/li>\n<li>Embed variations (YouTube, Reddit, Vimeo, TikTok, Bluesky, \u2026) can be hidden individually.<\/li>\n<li>Live search across all blocks and embed variations.<\/li>\n<li>\"Toggle all\" per group.<\/li>\n<li>Protection list: core blocks (paragraph, heading, list, image, group, columns) are always available as a safety net and cannot be hidden.<\/li>\n<li>Existing content using hidden blocks remains visible \u2014 only the insertion of new instances is blocked.<\/li>\n<li>No external dependencies, no tracking, no front-end database load.<\/li>\n<\/ul>\n\n<h4>Optional GenerateBlocks integration<\/h4>\n\n<p>GenerateBlocks is not required. If it is installed, the plugin adds a few conveniences:<\/p>\n\n<ul>\n<li>GenerateBlocks and GenerateBlocks Pro blocks are listed in separate groups.<\/li>\n<li>GenerateBlocks Pro blocks are marked with a Pro badge.<\/li>\n<li>Core blocks that GenerateBlocks Pro replaces with an extended variant are hidden automatically while Pro is active and reappear when it is deactivated.<\/li>\n<\/ul>\n\n<h4>Security<\/h4>\n\n<p>Defense in depth: capability check (<code>manage_options<\/code>), nonce validation, whitelist sanitization on save, consistent output escaping.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>wp-content\/plugins\/<\/code> or install the ZIP via Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin under Plugins.<\/li>\n<li>Configure the plugin under Settings \u2192 Hide Blocks.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20existing%20posts%20that%20use%20hidden%20blocks%20be%20destroyed%3F\"><h3>Will existing posts that use hidden blocks be destroyed?<\/h3><\/dt>\n<dd><p>No. Content remains intact and renders normally on the front-end. Only inserting new instances from the block inserter is blocked.<\/p><\/dd>\n<dt id=\"why%20can%27t%20i%20hide%20%22paragraph%22%20or%20%22image%22%3F\"><h3>Why can't I hide \"Paragraph\" or \"Image\"?<\/h3><\/dt>\n<dd><p>These blocks are hard-protected as a safety net \u2014 without them the editor would be practically unusable. If you really need to remove them, use the <code>allowed_block_types_all<\/code> filter in your theme or in a custom plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>Plugin header: removed <code>Tested up to<\/code> (declared in <code>readme.txt<\/code> only) and <code>Author URI<\/code>, as requested by the WordPress.org plugin review. No code changes.<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Translations: the plugin package no longer ships any translation files (<code>.po<\/code>, <code>.mo<\/code>, <code>.l10n.php<\/code>), as requested by the WordPress.org plugin review. All languages, including German and British English, are provided through translate.wordpress.org language packs. Only the <code>.pot<\/code> template remains in <code>languages\/<\/code>.<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Fix: after saving, the settings page showed two success notices \u2014 WordPress core adds \"Settings saved.\" itself for pages under Settings when <code>updated=1<\/code> is present. The plugin's own notice is removed.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>UI: each group header shows how many blocks of that group are currently hidden (\"N hidden\"), updated live while ticking checkboxes or using \"Toggle all\".<\/li>\n<li>UI: \"Toggle all\" is only shown while a group is expanded and is aligned with the second column of the block list; the per-group \"Save\" button is left-aligned.<\/li>\n<li>UI: the intro text no longer contains a hard line break.<\/li>\n<li>Translations: German (<code>de_DE<\/code>) and British English (<code>en_GB<\/code>) ship with the plugin; further languages (es_ES, fr_FR, it_IT, ja, nl_NL, pl_PL, pt_BR, ru_RU) are maintained in the development repository and submitted through translate.wordpress.org, where language packs are generated.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>UI: block groups (category view, namespace view) and the embed variations section are now accordions. All groups start collapsed; a click on the group header opens it. The header is a real button with <code>aria-expanded<\/code> \/ <code>aria-controls<\/code>, so it works with keyboard and screen readers. Checkboxes in collapsed groups are still submitted with the form.<\/li>\n<li>UI: while searching, groups with matches open automatically; clearing the search collapses them again.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>Rename:<\/strong> the plugin is now \"Block Inserter Filter\" (slug, folder, main file and Text Domain <code>block-inserter-filter<\/code>). The previous name \"Block Filter for GenerateBlocks\" was misleading \u2014 the plugin filters any Gutenberg block, GenerateBlocks is only an optional integration. WordPress deactivates the plugin during the folder change; reactivate it under Plugins.<\/li>\n<li><strong>Prefix:<\/strong> all globals renamed from <code>jg_gbbf_<\/code> \/ <code>JG_GBBF_<\/code> \/ <code>.jg-gbbf-*<\/code> to <code>jgor_bif_<\/code> \/ <code>JGOR_BIF_<\/code> \/ <code>.jgor-bif-*<\/code>. A one-shot migration on <code>admin_init<\/code> copies the settings from the previous option keys (<code>jg_gbbf_*<\/code>, or <code>gbba_*<\/code> from versions before 1.5.0) to <code>jgor_bif_hidden_blocks<\/code> and <code>jgor_bif_hidden_embed_variations<\/code> and removes the old keys; Multisite networks get a network-wide sweep. No data loss.<\/li>\n<li>Settings page slug is now <code>jgor-bif-hide-blocks<\/code> (<code>options-general.php?page=jgor-bif-hide-blocks<\/code>).<\/li>\n<li>Uninstall removes the current keys, both legacy key families and the migration sentinels.<\/li>\n<li>Internationalisation: the source language of all user-facing strings, the Plugin Name and the Description is now English. A German (<code>de_DE<\/code>) translation is provided in <code>languages\/<\/code> (<code>.pot<\/code>, <code>.po<\/code>, <code>.mo<\/code>, <code>.l10n.php<\/code>). WordPress 6.7 and newer load the bundled files automatically via the <code>Domain Path<\/code> header; WordPress.org language packs take precedence once they exist.<\/li>\n<li>Housekeeping: JS global <code>jgorBifEditorData<\/code>, console output removed from <code>admin.js<\/code>, unused localisation removed, tabs instead of spaces in the class files, <code>.distignore<\/code> added for SVN exports.<\/li>\n<li>Fix: when another plugin sets <code>allowed_block_types_all<\/code> to <code>false<\/code> (no blocks allowed at all), that restriction is now passed through unchanged instead of being replaced by the full block registry minus the hidden blocks.<\/li>\n<li>Removed the <code>all_plugins<\/code> display-name override on <code>wp-admin\/plugins.php<\/code>. The plugin is now listed under its real name everywhere.<\/li>\n<li>Fix: the plugin's own editor script no longer runs on the plugin's settings page, so icons of hidden embed variations render correctly there.<\/li>\n<li>Uninstall: the catch-all <code>LIKE 'gbba_%'<\/code> cleanup was removed; the two known legacy option keys are still deleted by name. The generic four-letter prefix could have matched options of other plugins.<\/li>\n<li>Multisite: <code>get_sites()<\/code> calls now pass <code>number =&gt; 0<\/code>, so networks with more than 100 sites are fully migrated and cleaned up.<\/li>\n<li>Declared compatibility with WordPress 7.1 (<code>Tested up to<\/code>).<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Declared compatibility with WordPress 7.0 (<code>Tested up to<\/code>). No code changes.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Refactor: prefix scheme corrected to <code>jg_gbbf_<\/code> \/ <code>JG_GBBF_<\/code> \/ <code>.jg-gbbf-*<\/code>. The previous code prefix was <code>gbba_<\/code> \/ <code>GBBA_<\/code> (from the original plugin slug <code>generateblocks-bloecke-ausblenden<\/code>), which no longer matched the current slug <code>gb-block-filter<\/code>. All globals \u2014 constants, classes, top-level functions, options, asset handles, CSS classes, body classes \u2014 are renamed accordingly.<\/li>\n<li>Class files in <code>includes\/<\/code> renamed from <code>class-gbba-*.php<\/code> to <code>class-jg-gbbf-*.php<\/code>.<\/li>\n<li>Migration: one-shot routine on <code>admin_init<\/code> copies the two existing options <code>gbba_hidden_blocks<\/code> and <code>gbba_hidden_embed_variations<\/code> to <code>jg_gbbf_hidden_blocks<\/code> and <code>jg_gbbf_hidden_embed_variations<\/code> (only when the new key is still empty, to preserve any value written between the update and the first admin page load). Legacy keys are deleted afterwards. Multisite installations get an additional network sweep from the main site so subsites are migrated even if no admin visits them.<\/li>\n<li>Uninstall: <code>uninstall.php<\/code> now removes both prefix families (<code>gbba_*<\/code> and <code>jg_gbbf_*<\/code>) plus the network-wide sweep sentinel, so no leftover rows remain even if the plugin is deleted right after the update.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Plugin Check compliance fix: shortened the 1.4.0 Upgrade Notice text to stay under the <code>upgrade_notice_limit<\/code> of 300 characters. No code or behavioural changes.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li><strong>Rename:<\/strong> plugin slug, folder name, main file and Text Domain changed to <code>gb-block-filter<\/code>; the displayed Plugin Name is now \"Block-Filter f\u00fcr GenerateBlocks\". Existing settings (hidden blocks, hidden embed variations) are preserved because the option names (<code>gbba_*<\/code> prefix) remain unchanged. WordPress may auto-deactivate the plugin during the slug change \u2014 reactivate it manually under Plugins.<\/li>\n<li>The plugin overview screen (<code>wp-admin\/plugins.php<\/code>) showed the plugin as \"GenerateBlocks \u2013 Block-Filter (Zusatz)\" via a scoped <code>all_plugins<\/code> filter, so it sorted directly under \"GenerateBlocks\". (Removed again in 1.6.0.)<\/li>\n<li><code>uninstall.php<\/code>: now also removes the second option <code>gbba_hidden_embed_variations<\/code> (added in v1.1.0 but previously not cleaned up); adds a defensive <code>LIKE 'gbba_%'<\/code> cleanup that covers any future plugin options and <code>_transient_gbba_*<\/code> \/ <code>_transient_timeout_gbba_*<\/code> entries. Multisite loop preserved.<\/li>\n<li><code>readme.txt<\/code>: Installation, FAQ and the older Changelog entries (v1.0.0 \u2013 v1.3.6) translated to English. Non-standard header fields (<code>Author<\/code>, <code>Author URI<\/code>, <code>Plugin URI<\/code>) removed from the readme header block \u2014 they belong in the PHP plugin header only. <code>Contributors<\/code> slug switched to the WordPress.org user name <code>jgorres<\/code>. New <code>== Upgrade Notice ==<\/code> section added.<\/li>\n<li><code>Plugin URI<\/code> removed from the main PHP file header (no dedicated plugin landing page).<\/li>\n<li><code>languages\/index.php<\/code>, <code>assets\/index.php<\/code>, <code>includes\/index.php<\/code> and the root <code>index.php<\/code> now use a proper <code>defined( 'ABSPATH' ) || exit;<\/code> guard instead of the bare \"Silence is golden\" stub.<\/li>\n<\/ul>\n\n<h4>1.3.10<\/h4>\n\n<ul>\n<li>Behavior change for Core blocks that GenerateBlocks Pro replaces (currently <code>core\/heading<\/code> and <code>core\/image<\/code>): they are now <strong>automatically hidden<\/strong> from the block inserter as soon as GenerateBlocks Pro is active. The earlier 1.3.9 behavior (Pro active = user may opt in to hiding) was reversed because the Pro variants are meant to fully replace the Core blocks while Pro is loaded. The block-inserter filter (<code>GBBA_Block_Filter::filter_blocks<\/code>) now merges the user-configured hide list with the auto-hidden list returned by <code>GBBA_Plugin::get_pro_replaced_blocks()<\/code> and applies both in one pass. The settings page shows the affected entries as checked + disabled, with the new \"Pro-Variante aktiv\" badge and a tooltip explaining the auto-hide. As soon as GenerateBlocks Pro is deactivated, the blocks fall back to the regular \"gesch\u00fctzt\" badge and reappear in the inserter \u2014 no manual cleanup needed.<\/li>\n<li>Internal: <code>get_protected_blocks()<\/code> reverted to a thin wrapper around the <code>PROTECTED_BLOCKS<\/code> constant (always full list). The Pro-aware logic now lives exclusively in <code>get_pro_replaced_blocks()<\/code>, which is consumed both by the inserter filter and by the admin renderer.<\/li>\n<\/ul>\n\n<h4>1.3.9<\/h4>\n\n<ul>\n<li>Feature: when GenerateBlocks Pro is active, the Core blocks <code>core\/heading<\/code> and <code>core\/image<\/code> are no longer in the protection list and can be hidden from the inserter. They are shown with a new \"GB Pro Variante\" badge (instead of \"gesch\u00fctzt\"), with a hover tooltip explaining that GenerateBlocks Pro provides an extended variant of the block. If GenerateBlocks Pro is not active, both blocks remain protected and keep the \"gesch\u00fctzt\" badge as before, so the editor stays safe to use on installations without the Pro plugin.<\/li>\n<li>Internal: replaced direct uses of <code>GBBA_Plugin::PROTECTED_BLOCKS<\/code> with the new helper <code>GBBA_Plugin::get_protected_blocks()<\/code>, which dynamically removes the Pro-replaced entries from the protection list. <code>GBBA_Plugin::is_generateblocks_pro_active()<\/code> exposes the detection (uses the <code>GENERATEBLOCKS_PRO_VERSION<\/code> constant defined by GB Pro itself, no extra plugin-list lookup).<\/li>\n<\/ul>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li>Critical fix: every block and embed variation is rendered twice in the settings page DOM \u2014 once in the category view and once in the namespace view. Both share <code>name=\"hidden[]\"<\/code> (respectively <code>name=\"hidden_embed[]\"<\/code>), and the HTML5 <code>hidden<\/code> attribute hides the inactive view visually but does <strong>not<\/strong> exclude its inputs from form submission. Toggling checkboxes in only one view therefore caused the other view to silently re-send the old state, which made the \"Hide all\" \/ \"Show all\" toggle look broken: after saving, all checkboxes appeared checked again, even though they had just been unchecked. The admin script now mirrors every checkbox change (manual click or \"Toggle all\" button) onto the twin checkbox with the same <code>name<\/code>\/<code>value<\/code> in the opposite view, so both views stay in sync and only one state is submitted. Existing data is safe; users who experienced wrongly-hidden blocks should open the settings page once after the update, click \"Toggle all\" until the affected groups are emptied, save, and reload the editor.<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>UX: Legacy \/ render-only blocks are no longer listed in the admin screen. Some plugins (for example GenerateBlocks 2.x for its <code>generateblocks\/container<\/code>) keep an old block registered as a pure server-side renderer so that existing posts continue to render after a refactor. Such blocks never appear in the inserter and therefore cannot be hidden in any meaningful way; previously they were listed anyway, leading to duplicate entries (for example two \"Container\" rows side by side \u2014 one being the new Element block, the other the legacy Container renderer). Detection heuristic: empty <code>attributes<\/code> schema combined with no declared block category. Pro blocks are unaffected, because they are consistently registered via <code>block.json<\/code> and therefore always carry both attributes and a category.<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>Follow-up fix to 1.3.5: <code>array_map( 'sanitize_text_field', wp_unslash( $_POST[...] ) )<\/code> is now placed directly in the same expression as the <code>$_POST<\/code> access \u2014 WPCS evaluates the <code>InputNotSanitized<\/code> sniff line-by-line, so a sanitization step on the following line was not picked up.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Plugin Check compliance:\n\n<ul>\n<li>Removed the superfluous <code>load_plugin_textdomain()<\/code> call in <code>class-gbba-plugin.php<\/code> \u2014 WordPress loads translations automatically via the <code>Domain Path<\/code> header since 4.6.<\/li>\n<li><code>$_POST['hidden']<\/code> and <code>$_POST['hidden_embed']<\/code> are now additionally filtered through <code>array_map( 'sanitize_text_field', \u2026 )<\/code> before the whitelist validation (fixes the <code>InputNotSanitized<\/code> warning).<\/li>\n<li>Marked the <code>do_action( 'enqueue_block_editor_assets' )<\/code> call with a clear <code>phpcs:ignore<\/code> plus explanation \u2014 the Core hook is fired deliberately so that other plugins\/themes register their block assets.<\/li>\n<li><code>uninstall.php<\/code>: renamed the local multisite loop variables <code>$sites<\/code> \/ <code>$site<\/code> to <code>$gbba_sites<\/code> \/ <code>$gbba_site<\/code> (fixes the <code>NonPrefixedVariableFound<\/code> warning).<\/li>\n<li><code>readme.txt<\/code>: translated the Short Description and the <code>== Description ==<\/code> block to English; switched the <code>Contributors<\/code> entry to a valid WordPress.org format.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>UX: \"Settings\" link in the WordPress plugins list \u2014 direct jump from Plugins to the plugin configuration page.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>UX: tighter column grid \u2014 minimum column width 280 px (was 340 px). On 1920 px monitors this yields roughly 6 columns, on 1440 px monitors 4 columns.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>UX: in the category view, the block namespace (e.g. <code>core\/paragraph<\/code>) is no longer shown as a slug tag. It still appears in the namespace view and on embed variations.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fix: block icons are now reliably rendered. On the settings page, WordPress core blocks are now explicitly registered client-side via <code>wp.blockLibrary.registerCoreBlocks()<\/code>; previously they were loosely loaded but not present in the block-type registry.<\/li>\n<li>Diagnostic hint in the browser console when block icons cannot be resolved.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Block icons are now displayed between the checkbox and the block name on the settings page \u2014 also for embed variations. Rendering via <code>wp.blockEditor.BlockIcon<\/code>. The block-editor assets are loaded on the settings page for this purpose.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fix: blocks without a declared category (for example GenerateBlocks inner blocks such as <code>loop-item<\/code>, <code>query-page-numbers<\/code>, <code>query-no-results<\/code>) no longer end up under \"Uncategorized\" but in the group of their own namespace.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>UX: \"Save\" button at the end of every group \u2014 no more long scrolling needed.<\/li>\n<li>UX: Pro badge only once in the group heading; redundant per-block Pro badges and the intro badge removed.<\/li>\n<li>Statistics: the number of hidden embed variations is now counted and shown in the intro.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>GenerateBlocks Free and GenerateBlocks Pro are shown in separate groups (previously combined).<\/li>\n<li>New section: embed variations (YouTube, Reddit, Vimeo, TikTok, Bluesky, \u2026) can now be removed individually from the editor. Technically via <code>wp.blocks.unregisterBlockVariation()<\/code>.<\/li>\n<li>Filter <code>gbba_embed_variations<\/code> for extending the variation list.<\/li>\n<li>The live search now also covers embed variations.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Hide individual Gutenberg blocks and embed variations from the block inserter, site-wide.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=369824"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jgorres"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369824"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369824"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369824"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369824"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369824"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}