Skip to content

Stabilize PHP-Only Block Registration#75543

Merged
t-hamano merged 10 commits into
trunkfrom
stabilize-php-only-blocks
Feb 17, 2026
Merged

Stabilize PHP-Only Block Registration#75543
t-hamano merged 10 commits into
trunkfrom
stabilize-php-only-blocks

Conversation

@t-hamano
Copy link
Copy Markdown
Contributor

@t-hamano t-hamano commented Feb 14, 2026

Closes #71792

What?

Stabilizes the PHP-only block registration feature.

How?

  • Based on the suggestion in Allow registering PHP-only blocks #71794 (comment), I tried to avoid exposing global variables and expose the blocks that should be auto-registered as autoRegisterBlocks via the block_editor_settings_all hook.
  • To register them as blocks on the client side, I created a private registerPHPOnlyBlocks() function. We might be able to mark this function as public from the start. The reason I created a dedicated function for the block registration logic is that we can't access settings in the registerCoreBlocks() function, so I was hesitant to add a new argument to registerCoreBlocks().
  • Renamed __experimentalAutoInspectorControl to autoGenerateControl. This is a marker that is only applied to attributes explicitly added by users and is used to generate controls.

Note

Note also that this PR changes the support keys from snake_case to camelCase.

Testing Instructions

Use the following code to register a sample PHP-only block:

function gutenberg_register_php_only_blocks() {
	register_block_type(
		'my-plugin/example',
		array(
			'title'           => 'My Example Block',
			'attributes'      => array(
				'title'   => array(
					'type'    => 'string',
					'default' => 'Hello World',
				),
				'count'   => array(
					'type'    => 'integer',
					'default' => 5,
				),
				'enabled' => array(
					'type'    => 'boolean',
					'default' => true,
				),
				'size'    => array(
					'type'    => 'string',
					'enum'    => array( 'small', 'medium', 'large' ),
					'default' => 'medium',
				),
			),
			'render_callback' => function ( $attributes ) {
				return sprintf(
					'<div>%s: %d items (%s)</div>',
					esc_html( $attributes['title'] ),
					$attributes['count'],
					$attributes['size']
				);
			},
			'supports'        => array(
				'autoRegister' => true,
			),
		)
	);
}

add_action( 'init', 'gutenberg_register_php_only_blocks' );

Make sure this block works across the post editor, site editor, widget editor, and customizer.

@github-actions github-actions Bot added [Package] Block library /packages/block-library [Package] Block editor /packages/block-editor [Package] Edit Post /packages/edit-post [Package] Edit Widgets /packages/edit-widgets [Package] Edit Site /packages/edit-site labels Feb 14, 2026
$auto_register_blocks = array();
$registered_blocks = WP_Block_Type_Registry::get_instance()->get_all_registered();

foreach ( $registered_blocks as $block_name => $block_type ) {
$has_auto_register_flag = ! empty( $block_type->auto_register ) || ! empty( $block_type->supports['auto_register'] );
$has_auto_register_flag = ! empty( $block_type->supports['auto_register'] );
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current implementation does not check for the top-level auto_register field. Checking supports.auto_register seems sufficient.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 14, 2026

Size Change: +5 B (0%)

Total Size: 6.85 MB

Filename Size Change
build/scripts/block-editor/index.min.js 327 kB +5 B (0%)
ℹ️ View Unchanged
Filename Size
build/modules/a11y/index.min.js 355 B
build/modules/abilities/index.min.js 42.3 kB
build/modules/block-editor/utils/fit-text-frontend.min.js 617 B
build/modules/block-library/accordion/view.min.js 779 B
build/modules/block-library/file/view.min.js 346 B
build/modules/block-library/form/view.min.js 528 B
build/modules/block-library/image/view.min.js 2.64 kB
build/modules/block-library/navigation/view.min.js 1.12 kB
build/modules/block-library/playlist/view.min.js 418 B
build/modules/block-library/query/view.min.js 518 B
build/modules/block-library/search/view.min.js 498 B
build/modules/block-library/tabs/view.min.js 946 B
build/modules/boot/index.min.js 14.7 kB
build/modules/core-abilities/index.min.js 892 B
build/modules/edit-site-init/index.min.js 2.13 kB
build/modules/interactivity-router/full-page.min.js 451 B
build/modules/interactivity-router/index.min.js 11.6 kB
build/modules/interactivity/index.min.js 15 kB
build/modules/latex-to-mathml/index.min.js 56.5 kB
build/modules/latex-to-mathml/loader.min.js 131 B
build/modules/lazy-editor/index.min.js 13.2 kB
build/modules/route/index.min.js 24.6 kB
build/modules/vips/loader.min.js 127 B
build/modules/vips/worker.min.js 3.81 MB
build/modules/workflow/index.min.js 19.9 kB
build/scripts/a11y/index.min.js 1.06 kB
build/scripts/annotations/index.min.js 2.39 kB
build/scripts/api-fetch/index.min.js 2.83 kB
build/scripts/autop/index.min.js 2.18 kB
build/scripts/base-styles/index.min.js 98 B
build/scripts/blob/index.min.js 631 B
build/scripts/block-directory/index.min.js 8.03 kB
build/scripts/block-library/index.min.js 306 kB
build/scripts/block-serialization-default-parser/index.min.js 1.16 kB
build/scripts/block-serialization-spec-parser/index.min.js 3.08 kB
build/scripts/blocks/index.min.js 56.7 kB
build/scripts/commands/index.min.js 19.9 kB
build/scripts/components/index.min.js 267 kB
build/scripts/compose/index.min.js 13.9 kB
build/scripts/core-commands/index.min.js 4.29 kB
build/scripts/core-data/index.min.js 27.6 kB
build/scripts/customize-widgets/index.min.js 12.3 kB
build/scripts/data-controls/index.min.js 795 B
build/scripts/data/index.min.js 9.64 kB
build/scripts/date/index.min.js 23.6 kB
build/scripts/deprecated/index.min.js 756 B
build/scripts/dom-ready/index.min.js 476 B
build/scripts/dom/index.min.js 4.98 kB
build/scripts/edit-post/index.min.js 16.2 kB
build/scripts/edit-site/index.min.js 244 kB
build/scripts/edit-widgets/index.min.js 20 kB
build/scripts/editor/index.min.js 347 kB
build/scripts/element/index.min.js 5.2 kB
build/scripts/escape-html/index.min.js 587 B
build/scripts/format-library/index.min.js 10.7 kB
build/scripts/hooks/index.min.js 1.83 kB
build/scripts/html-entities/index.min.js 494 B
build/scripts/i18n/index.min.js 2.46 kB
build/scripts/is-shallow-equal/index.min.js 572 B
build/scripts/keyboard-shortcuts/index.min.js 1.57 kB
build/scripts/keycodes/index.min.js 1.56 kB
build/scripts/list-reusable-blocks/index.min.js 2.44 kB
build/scripts/media-utils/index.min.js 73.6 kB
build/scripts/notices/index.min.js 1.12 kB
build/scripts/nux/index.min.js 1.89 kB
build/scripts/patterns/index.min.js 7.75 kB
build/scripts/plugins/index.min.js 2.15 kB
build/scripts/preferences-persistence/index.min.js 2.15 kB
build/scripts/preferences/index.min.js 3.3 kB
build/scripts/primitives/index.min.js 1.01 kB
build/scripts/priority-queue/index.min.js 1.62 kB
build/scripts/private-apis/index.min.js 1.08 kB
build/scripts/react-i18n/index.min.js 833 B
build/scripts/redux-routine/index.min.js 3.37 kB
build/scripts/reusable-blocks/index.min.js 2.92 kB
build/scripts/rich-text/index.min.js 13.9 kB
build/scripts/router/index.min.js 5.96 kB
build/scripts/server-side-render/index.min.js 1.91 kB
build/scripts/shortcode/index.min.js 1.59 kB
build/scripts/style-engine/index.min.js 2.37 kB
build/scripts/sync/index.min.js 42.5 kB
build/scripts/theme/index.min.js 21.9 kB
build/scripts/token-list/index.min.js 739 B
build/scripts/undo-manager/index.min.js 918 B
build/scripts/upload-media/index.min.js 7.4 kB
build/scripts/url/index.min.js 3.98 kB
build/scripts/vendors/react-dom.min.js 43.2 kB
build/scripts/vendors/react-jsx-runtime.min.js 667 B
build/scripts/vendors/react.min.js 2.77 kB
build/scripts/viewport/index.min.js 1.21 kB
build/scripts/warning/index.min.js 454 B
build/scripts/widgets/index.min.js 7.8 kB
build/scripts/wordcount/index.min.js 1.04 kB
build/styles/base-styles/admin-schemes-rtl.css 1.71 kB
build/styles/base-styles/admin-schemes-rtl.min.css 775 B
build/styles/base-styles/admin-schemes.css 1.71 kB
build/styles/base-styles/admin-schemes.min.css 775 B
build/styles/block-directory/style-rtl.css 1.96 kB
build/styles/block-directory/style-rtl.min.css 1.05 kB
build/styles/block-directory/style.css 1.97 kB
build/styles/block-directory/style.min.css 1.05 kB
build/styles/block-editor/content-rtl.css 5.47 kB
build/styles/block-editor/content-rtl.min.css 4.04 kB
build/styles/block-editor/content.css 5.46 kB
build/styles/block-editor/content.min.css 4.03 kB
build/styles/block-editor/default-editor-styles-rtl.css 697 B
build/styles/block-editor/default-editor-styles-rtl.min.css 224 B
build/styles/block-editor/default-editor-styles.css 697 B
build/styles/block-editor/default-editor-styles.min.css 224 B
build/styles/block-editor/style-rtl.css 18.3 kB
build/styles/block-editor/style-rtl.min.css 15.7 kB
build/styles/block-editor/style.css 18.3 kB
build/styles/block-editor/style.min.css 15.7 kB
build/styles/block-library/accordion-heading/style-rtl.css 346 B
build/styles/block-library/accordion-heading/style-rtl.min.css 325 B
build/styles/block-library/accordion-heading/style.css 346 B
build/styles/block-library/accordion-heading/style.min.css 325 B
build/styles/block-library/accordion-item/style-rtl.css 239 B
build/styles/block-library/accordion-item/style-rtl.min.css 180 B
build/styles/block-library/accordion-item/style.css 238 B
build/styles/block-library/accordion-item/style.min.css 180 B
build/styles/block-library/accordion-panel/style-rtl.css 110 B
build/styles/block-library/accordion-panel/style-rtl.min.css 99 B
build/styles/block-library/accordion-panel/style.css 110 B
build/styles/block-library/accordion-panel/style.min.css 99 B
build/styles/block-library/accordion/style-rtl.css 69 B
build/styles/block-library/accordion/style-rtl.min.css 62 B
build/styles/block-library/accordion/style.css 69 B
build/styles/block-library/accordion/style.min.css 62 B
build/styles/block-library/archives/style-rtl.css 101 B
build/styles/block-library/archives/style-rtl.min.css 90 B
build/styles/block-library/archives/style.css 101 B
build/styles/block-library/archives/style.min.css 90 B
build/styles/block-library/audio/editor-rtl.css 166 B
build/styles/block-library/audio/editor-rtl.min.css 149 B
build/styles/block-library/audio/editor.css 166 B
build/styles/block-library/audio/editor.min.css 151 B
build/styles/block-library/audio/style-rtl.css 945 B
build/styles/block-library/audio/style-rtl.min.css 132 B
build/styles/block-library/audio/style.css 945 B
build/styles/block-library/audio/style.min.css 132 B
build/styles/block-library/audio/theme-rtl.css 967 B
build/styles/block-library/audio/theme-rtl.min.css 134 B
build/styles/block-library/audio/theme.css 967 B
build/styles/block-library/audio/theme.min.css 134 B
build/styles/block-library/avatar/editor-rtl.css 127 B
build/styles/block-library/avatar/editor-rtl.min.css 115 B
build/styles/block-library/avatar/editor.css 127 B
build/styles/block-library/avatar/editor.min.css 115 B
build/styles/block-library/avatar/style-rtl.css 117 B
build/styles/block-library/avatar/style-rtl.min.css 104 B
build/styles/block-library/avatar/style.css 117 B
build/styles/block-library/avatar/style.min.css 104 B
build/styles/block-library/breadcrumbs/style-rtl.css 233 B
build/styles/block-library/breadcrumbs/style-rtl.min.css 203 B
build/styles/block-library/breadcrumbs/style.css 233 B
build/styles/block-library/breadcrumbs/style.min.css 203 B
build/styles/block-library/button/editor-rtl.css 306 B
build/styles/block-library/button/editor-rtl.min.css 265 B
build/styles/block-library/button/editor.css 317 B
build/styles/block-library/button/editor.min.css 265 B
build/styles/block-library/button/style-rtl.css 609 B
build/styles/block-library/button/style-rtl.min.css 554 B
build/styles/block-library/button/style.css 622 B
build/styles/block-library/button/style.min.css 554 B
build/styles/block-library/buttons/editor-rtl.css 391 B
build/styles/block-library/buttons/editor-rtl.min.css 291 B
build/styles/block-library/buttons/editor.css 391 B
build/styles/block-library/buttons/editor.min.css 291 B
build/styles/block-library/buttons/style-rtl.css 452 B
build/styles/block-library/buttons/style-rtl.min.css 349 B
build/styles/block-library/buttons/style.css 453 B
build/styles/block-library/buttons/style.min.css 349 B
build/styles/block-library/calendar/style-rtl.css 271 B
build/styles/block-library/calendar/style-rtl.min.css 239 B
build/styles/block-library/calendar/style.css 271 B
build/styles/block-library/calendar/style.min.css 239 B
build/styles/block-library/categories/editor-rtl.css 171 B
build/styles/block-library/categories/editor-rtl.min.css 132 B
build/styles/block-library/categories/editor.css 170 B
build/styles/block-library/categories/editor.min.css 131 B
build/styles/block-library/categories/style-rtl.css 226 B
build/styles/block-library/categories/style-rtl.min.css 169 B
build/styles/block-library/categories/style.css 235 B
build/styles/block-library/categories/style.min.css 169 B
build/styles/block-library/classic-rtl.css 363 B
build/styles/block-library/classic-rtl.min.css 321 B
build/styles/block-library/classic.css 363 B
build/styles/block-library/classic.min.css 321 B
build/styles/block-library/code/editor-rtl.css 59 B
build/styles/block-library/code/editor-rtl.min.css 53 B
build/styles/block-library/code/editor.css 59 B
build/styles/block-library/code/editor.min.css 53 B
build/styles/block-library/code/style-rtl.css 158 B
build/styles/block-library/code/style-rtl.min.css 139 B
build/styles/block-library/code/style.css 179 B
build/styles/block-library/code/style.min.css 139 B
build/styles/block-library/code/theme-rtl.css 135 B
build/styles/block-library/code/theme-rtl.min.css 122 B
build/styles/block-library/code/theme.css 135 B
build/styles/block-library/code/theme.min.css 122 B
build/styles/block-library/columns/editor-rtl.css 119 B
build/styles/block-library/columns/editor-rtl.min.css 108 B
build/styles/block-library/columns/editor.css 119 B
build/styles/block-library/columns/editor.min.css 108 B
build/styles/block-library/columns/style-rtl.css 1.3 kB
build/styles/block-library/columns/style-rtl.min.css 421 B
build/styles/block-library/columns/style.css 1.3 kB
build/styles/block-library/columns/style.min.css 421 B
build/styles/block-library/comment-author-avatar/editor-rtl.css 136 B
build/styles/block-library/comment-author-avatar/editor-rtl.min.css 124 B
build/styles/block-library/comment-author-avatar/editor.css 136 B
build/styles/block-library/comment-author-avatar/editor.min.css 124 B
build/styles/block-library/comment-author-name/style-rtl.css 79 B
build/styles/block-library/comment-author-name/style-rtl.min.css 72 B
build/styles/block-library/comment-author-name/style.css 79 B
build/styles/block-library/comment-author-name/style.min.css 72 B
build/styles/block-library/comment-content/style-rtl.css 137 B
build/styles/block-library/comment-content/style-rtl.min.css 120 B
build/styles/block-library/comment-content/style.css 137 B
build/styles/block-library/comment-content/style.min.css 120 B
build/styles/block-library/comment-date/style-rtl.css 72 B
build/styles/block-library/comment-date/style-rtl.min.css 65 B
build/styles/block-library/comment-date/style.css 72 B
build/styles/block-library/comment-date/style.min.css 65 B
build/styles/block-library/comment-edit-link/style-rtl.css 77 B
build/styles/block-library/comment-edit-link/style-rtl.min.css 70 B
build/styles/block-library/comment-edit-link/style.css 77 B
build/styles/block-library/comment-edit-link/style.min.css 70 B
build/styles/block-library/comment-reply-link/style-rtl.css 78 B
build/styles/block-library/comment-reply-link/style-rtl.min.css 71 B
build/styles/block-library/comment-reply-link/style.css 78 B
build/styles/block-library/comment-reply-link/style.min.css 71 B
build/styles/block-library/comment-template/style-rtl.css 213 B
build/styles/block-library/comment-template/style-rtl.min.css 191 B
build/styles/block-library/comment-template/style.css 213 B
build/styles/block-library/comment-template/style.min.css 191 B
build/styles/block-library/comments-pagination-numbers/editor-rtl.css 135 B
build/styles/block-library/comments-pagination-numbers/editor-rtl.min.css 122 B
build/styles/block-library/comments-pagination-numbers/editor.css 144 B
build/styles/block-library/comments-pagination-numbers/editor.min.css 121 B
build/styles/block-library/comments-pagination/editor-rtl.css 184 B
build/styles/block-library/comments-pagination/editor-rtl.min.css 168 B
build/styles/block-library/comments-pagination/editor.css 184 B
build/styles/block-library/comments-pagination/editor.min.css 168 B
build/styles/block-library/comments-pagination/style-rtl.css 224 B
build/styles/block-library/comments-pagination/style-rtl.min.css 201 B
build/styles/block-library/comments-pagination/style.css 236 B
build/styles/block-library/comments-pagination/style.min.css 201 B
build/styles/block-library/comments-title/editor-rtl.css 83 B
build/styles/block-library/comments-title/editor-rtl.min.css 75 B
build/styles/block-library/comments-title/editor.css 83 B
build/styles/block-library/comments-title/editor.min.css 75 B
build/styles/block-library/comments/editor-rtl.css 968 B
build/styles/block-library/comments/editor-rtl.min.css 842 B
build/styles/block-library/comments/editor.css 968 B
build/styles/block-library/comments/editor.min.css 842 B
build/styles/block-library/comments/style-rtl.css 754 B
build/styles/block-library/comments/style-rtl.min.css 637 B
build/styles/block-library/comments/style.css 752 B
build/styles/block-library/comments/style.min.css 637 B
build/styles/block-library/common-rtl.css 2.48 kB
build/styles/block-library/common-rtl.min.css 1.11 kB
build/styles/block-library/common.css 2.49 kB
build/styles/block-library/common.min.css 1.11 kB
build/styles/block-library/cover/editor-rtl.css 1.05 kB
build/styles/block-library/cover/editor-rtl.min.css 631 B
build/styles/block-library/cover/editor.css 1.05 kB
build/styles/block-library/cover/editor.min.css 631 B
build/styles/block-library/cover/style-rtl.css 2.5 kB
build/styles/block-library/cover/style-rtl.min.css 1.82 kB
build/styles/block-library/cover/style.css 2.51 kB
build/styles/block-library/cover/style.min.css 1.81 kB
build/styles/block-library/details/editor-rtl.css 72 B
build/styles/block-library/details/editor-rtl.min.css 65 B
build/styles/block-library/details/editor.css 72 B
build/styles/block-library/details/editor.min.css 65 B
build/styles/block-library/details/style-rtl.css 97 B
build/styles/block-library/details/style-rtl.min.css 86 B
build/styles/block-library/details/style.css 97 B
build/styles/block-library/details/style.min.css 86 B
build/styles/block-library/editor-elements-rtl.css 117 B
build/styles/block-library/editor-elements-rtl.min.css 75 B
build/styles/block-library/editor-elements.css 117 B
build/styles/block-library/editor-elements.min.css 75 B
build/styles/block-library/editor-rtl.css 12.3 kB
build/styles/block-library/editor-rtl.min.css 10 kB
build/styles/block-library/editor.css 12.3 kB
build/styles/block-library/editor.min.css 10.1 kB
build/styles/block-library/elements-rtl.css 84 B
build/styles/block-library/elements-rtl.min.css 54 B
build/styles/block-library/elements.css 84 B
build/styles/block-library/elements.min.css 54 B
build/styles/block-library/embed/editor-rtl.css 391 B
build/styles/block-library/embed/editor-rtl.min.css 331 B
build/styles/block-library/embed/editor.css 390 B
build/styles/block-library/embed/editor.min.css 331 B
build/styles/block-library/embed/style-rtl.css 1.29 kB
build/styles/block-library/embed/style-rtl.min.css 448 B
build/styles/block-library/embed/style.css 1.29 kB
build/styles/block-library/embed/style.min.css 448 B
build/styles/block-library/embed/theme-rtl.css 967 B
build/styles/block-library/embed/theme-rtl.min.css 133 B
build/styles/block-library/embed/theme.css 967 B
build/styles/block-library/embed/theme.min.css 133 B
build/styles/block-library/file/editor-rtl.css 352 B
build/styles/block-library/file/editor-rtl.min.css 324 B
build/styles/block-library/file/editor.css 353 B
build/styles/block-library/file/editor.min.css 324 B
build/styles/block-library/file/style-rtl.css 318 B
build/styles/block-library/file/style-rtl.min.css 278 B
build/styles/block-library/file/style.css 331 B
build/styles/block-library/file/style.min.css 278 B
build/styles/block-library/footnotes/style-rtl.css 220 B
build/styles/block-library/footnotes/style-rtl.min.css 198 B
build/styles/block-library/footnotes/style.css 219 B
build/styles/block-library/footnotes/style.min.css 197 B
build/styles/block-library/form-input/editor-rtl.css 247 B
build/styles/block-library/form-input/editor-rtl.min.css 229 B
build/styles/block-library/form-input/editor.css 246 B
build/styles/block-library/form-input/editor.min.css 229 B
build/styles/block-library/form-input/style-rtl.css 467 B
build/styles/block-library/form-input/style-rtl.min.css 366 B
build/styles/block-library/form-input/style.css 467 B
build/styles/block-library/form-input/style.min.css 366 B
build/styles/block-library/form-submission-notification/editor-rtl.css 368 B
build/styles/block-library/form-submission-notification/editor-rtl.min.css 344 B
build/styles/block-library/form-submission-notification/editor.css 368 B
build/styles/block-library/form-submission-notification/editor.min.css 341 B
build/styles/block-library/form-submit-button/style-rtl.css 77 B
build/styles/block-library/form-submit-button/style-rtl.min.css 69 B
build/styles/block-library/form-submit-button/style.css 77 B
build/styles/block-library/form-submit-button/style.min.css 69 B
build/styles/block-library/freeform/editor-rtl.css 1.12 kB
build/styles/block-library/freeform/editor-rtl.min.css 288 B
build/styles/block-library/freeform/editor.css 1.12 kB
build/styles/block-library/freeform/editor.min.css 288 B
build/styles/block-library/gallery/editor-rtl.css 1.52 kB
build/styles/block-library/gallery/editor-rtl.min.css 615 B
build/styles/block-library/gallery/editor.css 1.52 kB
build/styles/block-library/gallery/editor.min.css 616 B
build/styles/block-library/gallery/style-rtl.css 2.84 kB
build/styles/block-library/gallery/style-rtl.min.css 1.84 kB
build/styles/block-library/gallery/style.css 2.84 kB
build/styles/block-library/gallery/style.min.css 1.84 kB
build/styles/block-library/gallery/theme-rtl.css 941 B
build/styles/block-library/gallery/theme-rtl.min.css 108 B
build/styles/block-library/gallery/theme.css 941 B
build/styles/block-library/gallery/theme.min.css 108 B
build/styles/block-library/group/editor-rtl.css 772 B
build/styles/block-library/group/editor-rtl.min.css 335 B
build/styles/block-library/group/editor.css 772 B
build/styles/block-library/group/editor.min.css 335 B
build/styles/block-library/group/style-rtl.css 120 B
build/styles/block-library/group/style-rtl.min.css 103 B
build/styles/block-library/group/style.css 120 B
build/styles/block-library/group/style.min.css 103 B
build/styles/block-library/group/theme-rtl.css 468 B
build/styles/block-library/group/theme-rtl.min.css 79 B
build/styles/block-library/group/theme.css 468 B
build/styles/block-library/group/theme.min.css 79 B
build/styles/block-library/heading/style-rtl.css 604 B
build/styles/block-library/heading/style-rtl.min.css 205 B
build/styles/block-library/heading/style.css 604 B
build/styles/block-library/heading/style.min.css 205 B
build/styles/block-library/html/editor-rtl.css 1.24 kB
build/styles/block-library/html/editor-rtl.min.css 419 B
build/styles/block-library/html/editor.css 1.25 kB
build/styles/block-library/html/editor.min.css 419 B
build/styles/block-library/icon/editor-rtl.css 768 B
build/styles/block-library/icon/editor-rtl.min.css 370 B
build/styles/block-library/icon/editor.css 768 B
build/styles/block-library/icon/editor.min.css 370 B
build/styles/block-library/icon/style-rtl.css 152 B
build/styles/block-library/icon/style-rtl.min.css 89 B
build/styles/block-library/icon/style.css 152 B
build/styles/block-library/icon/style.min.css 89 B
build/styles/block-library/image/editor-rtl.css 1.63 kB
build/styles/block-library/image/editor-rtl.min.css 763 B
build/styles/block-library/image/editor.css 1.62 kB
build/styles/block-library/image/editor.min.css 763 B
build/styles/block-library/image/style-rtl.css 2.92 kB
build/styles/block-library/image/style-rtl.min.css 1.86 kB
build/styles/block-library/image/style.css 2.92 kB
build/styles/block-library/image/style.min.css 1.85 kB
build/styles/block-library/image/theme-rtl.css 971 B
build/styles/block-library/image/theme-rtl.min.css 137 B
build/styles/block-library/image/theme.css 971 B
build/styles/block-library/image/theme.min.css 137 B
build/styles/block-library/latest-comments/style-rtl.css 394 B
build/styles/block-library/latest-comments/style-rtl.min.css 355 B
build/styles/block-library/latest-comments/style.css 394 B
build/styles/block-library/latest-comments/style.min.css 354 B
build/styles/block-library/latest-posts/editor-rtl.css 154 B
build/styles/block-library/latest-posts/editor-rtl.min.css 139 B
build/styles/block-library/latest-posts/editor.css 153 B
build/styles/block-library/latest-posts/editor.min.css 138 B
build/styles/block-library/latest-posts/style-rtl.css 1.36 kB
build/styles/block-library/latest-posts/style-rtl.min.css 520 B
build/styles/block-library/latest-posts/style.css 1.37 kB
build/styles/block-library/latest-posts/style.min.css 520 B
build/styles/block-library/list/style-rtl.css 498 B
build/styles/block-library/list/style-rtl.min.css 107 B
build/styles/block-library/list/style.css 498 B
build/styles/block-library/list/style.min.css 107 B
build/styles/block-library/loginout/style-rtl.css 68 B
build/styles/block-library/loginout/style-rtl.min.css 61 B
build/styles/block-library/loginout/style.css 68 B
build/styles/block-library/loginout/style.min.css 61 B
build/styles/block-library/math/editor-rtl.css 491 B
build/styles/block-library/math/editor-rtl.min.css 105 B
build/styles/block-library/math/editor.css 502 B
build/styles/block-library/math/editor.min.css 105 B
build/styles/block-library/math/style-rtl.css 70 B
build/styles/block-library/math/style-rtl.min.css 61 B
build/styles/block-library/math/style.css 70 B
build/styles/block-library/math/style.min.css 61 B
build/styles/block-library/media-text/editor-rtl.css 389 B
build/styles/block-library/media-text/editor-rtl.min.css 321 B
build/styles/block-library/media-text/editor.css 389 B
build/styles/block-library/media-text/editor.min.css 320 B
build/styles/block-library/media-text/style-rtl.css 873 B
build/styles/block-library/media-text/style-rtl.min.css 552 B
build/styles/block-library/media-text/style.css 901 B
build/styles/block-library/media-text/style.min.css 550 B
build/styles/block-library/more/editor-rtl.css 796 B
build/styles/block-library/more/editor-rtl.min.css 393 B
build/styles/block-library/more/editor.css 798 B
build/styles/block-library/more/editor.min.css 393 B
build/styles/block-library/navigation-link/editor-rtl.css 1.21 kB
build/styles/block-library/navigation-link/editor-rtl.min.css 645 B
build/styles/block-library/navigation-link/editor.css 1.21 kB
build/styles/block-library/navigation-link/editor.min.css 647 B
build/styles/block-library/navigation-link/style-rtl.css 579 B
build/styles/block-library/navigation-link/style-rtl.min.css 190 B
build/styles/block-library/navigation-link/style.css 579 B
build/styles/block-library/navigation-link/style.min.css 188 B
build/styles/block-library/navigation-overlay-close/style-rtl.css 257 B
build/styles/block-library/navigation-overlay-close/style-rtl.min.css 236 B
build/styles/block-library/navigation-overlay-close/style.css 257 B
build/styles/block-library/navigation-overlay-close/style.min.css 236 B
build/styles/block-library/navigation-submenu/editor-rtl.css 1.12 kB
build/styles/block-library/navigation-submenu/editor-rtl.min.css 295 B
build/styles/block-library/navigation-submenu/editor.css 1.12 kB
build/styles/block-library/navigation-submenu/editor.min.css 294 B
build/styles/block-library/navigation/editor-rtl.css 3.28 kB
build/styles/block-library/navigation/editor-rtl.min.css 2.28 kB
build/styles/block-library/navigation/editor.css 3.29 kB
build/styles/block-library/navigation/editor.min.css 2.28 kB
build/styles/block-library/navigation/style-rtl.css 3.55 kB
build/styles/block-library/navigation/style-rtl.min.css 2.49 kB
build/styles/block-library/navigation/style.css 3.54 kB
build/styles/block-library/navigation/style.min.css 2.48 kB
build/styles/block-library/nextpage/editor-rtl.css 799 B
build/styles/block-library/nextpage/editor-rtl.min.css 392 B
build/styles/block-library/nextpage/editor.css 800 B
build/styles/block-library/nextpage/editor.min.css 392 B
build/styles/block-library/page-list/editor-rtl.css 1.18 kB
build/styles/block-library/page-list/editor-rtl.min.css 356 B
build/styles/block-library/page-list/editor.css 1.18 kB
build/styles/block-library/page-list/editor.min.css 356 B
build/styles/block-library/page-list/style-rtl.css 207 B
build/styles/block-library/page-list/style-rtl.min.css 192 B
build/styles/block-library/page-list/style.css 207 B
build/styles/block-library/page-list/style.min.css 192 B
build/styles/block-library/paragraph/editor-rtl.css 315 B
build/styles/block-library/paragraph/editor-rtl.min.css 292 B
build/styles/block-library/paragraph/editor.css 314 B
build/styles/block-library/paragraph/editor.min.css 292 B
build/styles/block-library/paragraph/style-rtl.css 746 B
build/styles/block-library/paragraph/style-rtl.min.css 341 B
build/styles/block-library/paragraph/style.css 752 B
build/styles/block-library/paragraph/style.min.css 340 B
build/styles/block-library/playlist-track/style-rtl.css 453 B
build/styles/block-library/playlist-track/style-rtl.min.css 420 B
build/styles/block-library/playlist-track/style.css 453 B
build/styles/block-library/playlist-track/style.min.css 420 B
build/styles/block-library/playlist/editor-rtl.css 84 B
build/styles/block-library/playlist/editor-rtl.min.css 73 B
build/styles/block-library/playlist/editor.css 84 B
build/styles/block-library/playlist/editor.min.css 73 B
build/styles/block-library/playlist/style-rtl.css 385 B
build/styles/block-library/playlist/style-rtl.min.css 363 B
build/styles/block-library/playlist/style.css 382 B
build/styles/block-library/playlist/style.min.css 363 B
build/styles/block-library/post-author-biography/style-rtl.css 81 B
build/styles/block-library/post-author-biography/style-rtl.min.css 74 B
build/styles/block-library/post-author-biography/style.css 81 B
build/styles/block-library/post-author-biography/style.min.css 74 B
build/styles/block-library/post-author-name/style-rtl.css 76 B
build/styles/block-library/post-author-name/style-rtl.min.css 69 B
build/styles/block-library/post-author-name/style.css 76 B
build/styles/block-library/post-author-name/style.min.css 69 B
build/styles/block-library/post-author/editor-rtl.css 490 B
build/styles/block-library/post-author/editor-rtl.min.css 104 B
build/styles/block-library/post-author/editor.css 490 B
build/styles/block-library/post-author/editor.min.css 104 B
build/styles/block-library/post-author/style-rtl.css 213 B
build/styles/block-library/post-author/style-rtl.min.css 188 B
build/styles/block-library/post-author/style.css 214 B
build/styles/block-library/post-author/style.min.css 189 B
build/styles/block-library/post-comments-count/style-rtl.css 79 B
build/styles/block-library/post-comments-count/style-rtl.min.css 72 B
build/styles/block-library/post-comments-count/style.css 79 B
build/styles/block-library/post-comments-count/style.min.css 72 B
build/styles/block-library/post-comments-form/editor-rtl.css 104 B
build/styles/block-library/post-comments-form/editor-rtl.min.css 96 B
build/styles/block-library/post-comments-form/editor.css 104 B
build/styles/block-library/post-comments-form/editor.min.css 96 B
build/styles/block-library/post-comments-form/style-rtl.css 585 B
build/styles/block-library/post-comments-form/style-rtl.min.css 525 B
build/styles/block-library/post-comments-form/style.css 584 B
build/styles/block-library/post-comments-form/style.min.css 525 B
build/styles/block-library/post-comments-link/style-rtl.css 78 B
build/styles/block-library/post-comments-link/style-rtl.min.css 71 B
build/styles/block-library/post-comments-link/style.css 78 B
build/styles/block-library/post-comments-link/style.min.css 71 B
build/styles/block-library/post-content/style-rtl.css 68 B
build/styles/block-library/post-content/style-rtl.min.css 61 B
build/styles/block-library/post-content/style.css 68 B
build/styles/block-library/post-content/style.min.css 61 B
build/styles/block-library/post-date/style-rtl.css 69 B
build/styles/block-library/post-date/style-rtl.min.css 62 B
build/styles/block-library/post-date/style.css 69 B
build/styles/block-library/post-date/style.min.css 62 B
build/styles/block-library/post-excerpt/editor-rtl.css 78 B
build/styles/block-library/post-excerpt/editor-rtl.min.css 71 B
build/styles/block-library/post-excerpt/editor.css 78 B
build/styles/block-library/post-excerpt/editor.min.css 71 B
build/styles/block-library/post-excerpt/style-rtl.css 171 B
build/styles/block-library/post-excerpt/style-rtl.min.css 155 B
build/styles/block-library/post-excerpt/style.css 171 B
build/styles/block-library/post-excerpt/style.min.css 155 B
build/styles/block-library/post-featured-image/editor-rtl.css 1.14 kB
build/styles/block-library/post-featured-image/editor-rtl.min.css 719 B
build/styles/block-library/post-featured-image/editor.css 1.14 kB
build/styles/block-library/post-featured-image/editor.min.css 717 B
build/styles/block-library/post-featured-image/style-rtl.css 392 B
build/styles/block-library/post-featured-image/style-rtl.min.css 347 B
build/styles/block-library/post-featured-image/style.css 392 B
build/styles/block-library/post-featured-image/style.min.css 347 B
build/styles/block-library/post-navigation-link/style-rtl.css 234 B
build/styles/block-library/post-navigation-link/style-rtl.min.css 215 B
build/styles/block-library/post-navigation-link/style.css 245 B
build/styles/block-library/post-navigation-link/style.min.css 214 B
build/styles/block-library/post-template/style-rtl.css 1.25 kB
build/styles/block-library/post-template/style-rtl.min.css 414 B
build/styles/block-library/post-template/style.css 1.25 kB
build/styles/block-library/post-template/style.min.css 414 B
build/styles/block-library/post-terms/style-rtl.css 108 B
build/styles/block-library/post-terms/style-rtl.min.css 96 B
build/styles/block-library/post-terms/style.css 108 B
build/styles/block-library/post-terms/style.min.css 96 B
build/styles/block-library/post-time-to-read/style-rtl.css 77 B
build/styles/block-library/post-time-to-read/style-rtl.min.css 70 B
build/styles/block-library/post-time-to-read/style.css 77 B
build/styles/block-library/post-time-to-read/style.min.css 70 B
build/styles/block-library/post-title/style-rtl.css 175 B
build/styles/block-library/post-title/style-rtl.min.css 162 B
build/styles/block-library/post-title/style.css 175 B
build/styles/block-library/post-title/style.min.css 162 B
build/styles/block-library/preformatted/style-rtl.css 511 B
build/styles/block-library/preformatted/style-rtl.min.css 125 B
build/styles/block-library/preformatted/style.css 511 B
build/styles/block-library/preformatted/style.min.css 125 B
build/styles/block-library/pullquote/editor-rtl.css 146 B
build/styles/block-library/pullquote/editor-rtl.min.css 133 B
build/styles/block-library/pullquote/editor.css 146 B
build/styles/block-library/pullquote/editor.min.css 133 B
build/styles/block-library/pullquote/style-rtl.css 765 B
build/styles/block-library/pullquote/style-rtl.min.css 365 B
build/styles/block-library/pullquote/style.css 764 B
build/styles/block-library/pullquote/style.min.css 365 B
build/styles/block-library/pullquote/theme-rtl.css 195 B
build/styles/block-library/pullquote/theme-rtl.min.css 176 B
build/styles/block-library/pullquote/theme.css 195 B
build/styles/block-library/pullquote/theme.min.css 176 B
build/styles/block-library/query-pagination-numbers/editor-rtl.css 134 B
build/styles/block-library/query-pagination-numbers/editor-rtl.min.css 121 B
build/styles/block-library/query-pagination-numbers/editor.css 144 B
build/styles/block-library/query-pagination-numbers/editor.min.css 118 B
build/styles/block-library/query-pagination/editor-rtl.css 168 B
build/styles/block-library/query-pagination/editor-rtl.min.css 154 B
build/styles/block-library/query-pagination/editor.css 168 B
build/styles/block-library/query-pagination/editor.min.css 154 B
build/styles/block-library/query-pagination/style-rtl.css 254 B
build/styles/block-library/query-pagination/style-rtl.min.css 237 B
build/styles/block-library/query-pagination/style.css 265 B
build/styles/block-library/query-pagination/style.min.css 237 B
build/styles/block-library/query-title/style-rtl.css 71 B
build/styles/block-library/query-title/style-rtl.min.css 64 B
build/styles/block-library/query-title/style.css 71 B
build/styles/block-library/query-title/style.min.css 64 B
build/styles/block-library/query-total/style-rtl.css 71 B
build/styles/block-library/query-total/style-rtl.min.css 64 B
build/styles/block-library/query-total/style.css 71 B
build/styles/block-library/query-total/style.min.css 64 B
build/styles/block-library/query/editor-rtl.css 1.28 kB
build/styles/block-library/query/editor-rtl.min.css 438 B
build/styles/block-library/query/editor.css 1.28 kB
build/styles/block-library/query/editor.min.css 438 B
build/styles/block-library/quote/style-rtl.css 255 B
build/styles/block-library/quote/style-rtl.min.css 238 B
build/styles/block-library/quote/style.css 256 B
build/styles/block-library/quote/style.min.css 238 B
build/styles/block-library/quote/theme-rtl.css 253 B
build/styles/block-library/quote/theme-rtl.min.css 233 B
build/styles/block-library/quote/theme.css 254 B
build/styles/block-library/quote/theme.min.css 236 B
build/styles/block-library/read-more/style-rtl.css 146 B
build/styles/block-library/read-more/style-rtl.min.css 131 B
build/styles/block-library/read-more/style.css 146 B
build/styles/block-library/read-more/style.min.css 131 B
build/styles/block-library/reset-rtl.css 936 B
build/styles/block-library/reset-rtl.min.css 467 B
build/styles/block-library/reset.css 936 B
build/styles/block-library/reset.min.css 467 B
build/styles/block-library/rss/editor-rtl.css 144 B
build/styles/block-library/rss/editor-rtl.min.css 126 B
build/styles/block-library/rss/editor.css 144 B
build/styles/block-library/rss/editor.min.css 126 B
build/styles/block-library/rss/style-rtl.css 1.11 kB
build/styles/block-library/rss/style-rtl.min.css 284 B
build/styles/block-library/rss/style.css 1.12 kB
build/styles/block-library/rss/style.min.css 283 B
build/styles/block-library/search/editor-rtl.css 217 B
build/styles/block-library/search/editor-rtl.min.css 199 B
build/styles/block-library/search/editor.css 217 B
build/styles/block-library/search/editor.min.css 199 B
build/styles/block-library/search/style-rtl.css 1.1 kB
build/styles/block-library/search/style-rtl.min.css 665 B
build/styles/block-library/search/style.css 1.1 kB
build/styles/block-library/search/style.min.css 666 B
build/styles/block-library/search/theme-rtl.css 130 B
build/styles/block-library/search/theme-rtl.min.css 113 B
build/styles/block-library/search/theme.css 130 B
build/styles/block-library/search/theme.min.css 113 B
build/styles/block-library/separator/editor-rtl.css 106 B
build/styles/block-library/separator/editor-rtl.min.css 100 B
build/styles/block-library/separator/editor.css 106 B
build/styles/block-library/separator/editor.min.css 100 B
build/styles/block-library/separator/style-rtl.css 284 B
build/styles/block-library/separator/style-rtl.min.css 248 B
build/styles/block-library/separator/style.css 297 B
build/styles/block-library/separator/style.min.css 248 B
build/styles/block-library/separator/theme-rtl.css 226 B
build/styles/block-library/separator/theme-rtl.min.css 195 B
build/styles/block-library/separator/theme.css 226 B
build/styles/block-library/separator/theme.min.css 195 B
build/styles/block-library/shortcode/editor-rtl.css 1.1 kB
build/styles/block-library/shortcode/editor-rtl.min.css 286 B
build/styles/block-library/shortcode/editor.css 1.1 kB
build/styles/block-library/shortcode/editor.min.css 286 B
build/styles/block-library/site-logo/editor-rtl.css 1.12 kB
build/styles/block-library/site-logo/editor-rtl.min.css 696 B
build/styles/block-library/site-logo/editor.css 1.12 kB
build/styles/block-library/site-logo/editor.min.css 692 B
build/styles/block-library/site-logo/style-rtl.css 239 B
build/styles/block-library/site-logo/style-rtl.min.css 218 B
build/styles/block-library/site-logo/style.css 238 B
build/styles/block-library/site-logo/style.min.css 218 B
build/styles/block-library/site-tagline/editor-rtl.css 94 B
build/styles/block-library/site-tagline/editor-rtl.min.css 87 B
build/styles/block-library/site-tagline/editor.css 94 B
build/styles/block-library/site-tagline/editor.min.css 87 B
build/styles/block-library/site-tagline/style-rtl.css 72 B
build/styles/block-library/site-tagline/style-rtl.min.css 65 B
build/styles/block-library/site-tagline/style.css 72 B
build/styles/block-library/site-tagline/style.min.css 65 B
build/styles/block-library/site-title/editor-rtl.css 93 B
build/styles/block-library/site-title/editor-rtl.min.css 85 B
build/styles/block-library/site-title/editor.css 93 B
build/styles/block-library/site-title/editor.min.css 85 B
build/styles/block-library/site-title/style-rtl.css 153 B
build/styles/block-library/site-title/style-rtl.min.css 143 B
build/styles/block-library/site-title/style.css 153 B
build/styles/block-library/site-title/style.min.css 143 B
build/styles/block-library/social-link/editor-rtl.css 346 B
build/styles/block-library/social-link/editor-rtl.min.css 314 B
build/styles/block-library/social-link/editor.css 348 B
build/styles/block-library/social-link/editor.min.css 314 B
build/styles/block-library/social-links/editor-rtl.css 737 B
build/styles/block-library/social-links/editor-rtl.min.css 339 B
build/styles/block-library/social-links/editor.css 738 B
build/styles/block-library/social-links/editor.min.css 338 B
build/styles/block-library/social-links/style-rtl.css 1.57 kB
build/styles/block-library/social-links/style-rtl.min.css 1.51 kB
build/styles/block-library/social-links/style.css 1.57 kB
build/styles/block-library/social-links/style.min.css 1.51 kB
build/styles/block-library/spacer/editor-rtl.css 774 B
build/styles/block-library/spacer/editor-rtl.min.css 346 B
build/styles/block-library/spacer/editor.css 774 B
build/styles/block-library/spacer/editor.min.css 346 B
build/styles/block-library/spacer/style-rtl.css 55 B
build/styles/block-library/spacer/style-rtl.min.css 48 B
build/styles/block-library/spacer/style.css 55 B
build/styles/block-library/spacer/style.min.css 48 B
build/styles/block-library/style-rtl.css 20.6 kB
build/styles/block-library/style-rtl.min.css 17.1 kB
build/styles/block-library/style.css 20.7 kB
build/styles/block-library/style.min.css 17.1 kB
build/styles/block-library/tab-panel/style-rtl.css 75 B
build/styles/block-library/tab-panel/style-rtl.min.css 64 B
build/styles/block-library/tab-panel/style.css 75 B
build/styles/block-library/tab-panel/style.min.css 64 B
build/styles/block-library/tab/style-rtl.css 233 B
build/styles/block-library/tab/style-rtl.min.css 210 B
build/styles/block-library/tab/style.css 233 B
build/styles/block-library/tab/style.min.css 210 B
build/styles/block-library/table-of-contents/style-rtl.css 89 B
build/styles/block-library/table-of-contents/style-rtl.min.css 83 B
build/styles/block-library/table-of-contents/style.css 89 B
build/styles/block-library/table-of-contents/style.min.css 83 B
build/styles/block-library/table/editor-rtl.css 1.25 kB
build/styles/block-library/table/editor-rtl.min.css 394 B
build/styles/block-library/table/editor.css 1.25 kB
build/styles/block-library/table/editor.min.css 394 B
build/styles/block-library/table/style-rtl.css 1.06 kB
build/styles/block-library/table/style-rtl.min.css 641 B
build/styles/block-library/table/style.css 1.06 kB
build/styles/block-library/table/style.min.css 640 B
build/styles/block-library/table/theme-rtl.css 985 B
build/styles/block-library/table/theme-rtl.min.css 152 B
build/styles/block-library/table/theme.css 985 B
build/styles/block-library/table/theme.min.css 152 B
build/styles/block-library/tabs-menu-item/editor-rtl.css 254 B
build/styles/block-library/tabs-menu-item/editor-rtl.min.css 239 B
build/styles/block-library/tabs-menu-item/editor.css 254 B
build/styles/block-library/tabs-menu-item/editor.min.css 239 B
build/styles/block-library/tabs-menu-item/style-rtl.css 452 B
build/styles/block-library/tabs-menu-item/style-rtl.min.css 420 B
build/styles/block-library/tabs-menu-item/style.css 452 B
build/styles/block-library/tabs-menu-item/style.min.css 420 B
build/styles/block-library/tabs-menu/editor-rtl.css 102 B
build/styles/block-library/tabs-menu/editor-rtl.min.css 93 B
build/styles/block-library/tabs-menu/editor.css 102 B
build/styles/block-library/tabs-menu/editor.min.css 93 B
build/styles/block-library/tabs-menu/style-rtl.css 135 B
build/styles/block-library/tabs-menu/style-rtl.min.css 111 B
build/styles/block-library/tabs-menu/style.css 135 B
build/styles/block-library/tabs-menu/style.min.css 111 B
build/styles/block-library/tabs/style-rtl.css 95 B
build/styles/block-library/tabs/style-rtl.min.css 84 B
build/styles/block-library/tabs/style.css 95 B
build/styles/block-library/tabs/style.min.css 84 B
build/styles/block-library/tag-cloud/style-rtl.css 283 B
build/styles/block-library/tag-cloud/style-rtl.min.css 248 B
build/styles/block-library/tag-cloud/style.css 283 B
build/styles/block-library/tag-cloud/style.min.css 248 B
build/styles/block-library/template-part/editor-rtl.css 1.2 kB
build/styles/block-library/template-part/editor-rtl.min.css 368 B
build/styles/block-library/template-part/editor.css 1.2 kB
build/styles/block-library/template-part/editor.min.css 368 B
build/styles/block-library/template-part/theme-rtl.css 492 B
build/styles/block-library/template-part/theme-rtl.min.css 113 B
build/styles/block-library/template-part/theme.css 492 B
build/styles/block-library/template-part/theme.min.css 113 B
build/styles/block-library/term-count/style-rtl.css 70 B
build/styles/block-library/term-count/style-rtl.min.css 63 B
build/styles/block-library/term-count/style.css 70 B
build/styles/block-library/term-count/style.min.css 63 B
build/styles/block-library/term-description/style-rtl.css 138 B
build/styles/block-library/term-description/style-rtl.min.css 126 B
build/styles/block-library/term-description/style.css 138 B
build/styles/block-library/term-description/style.min.css 126 B
build/styles/block-library/term-name/style-rtl.css 69 B
build/styles/block-library/term-name/style-rtl.min.css 62 B
build/styles/block-library/term-name/style.css 69 B
build/styles/block-library/term-name/style.min.css 62 B
build/styles/block-library/term-template/editor-rtl.css 267 B
build/styles/block-library/term-template/editor-rtl.min.css 225 B
build/styles/block-library/term-template/editor.css 267 B
build/styles/block-library/term-template/editor.min.css 225 B
build/styles/block-library/term-template/style-rtl.css 124 B
build/styles/block-library/term-template/style-rtl.min.css 114 B
build/styles/block-library/term-template/style.css 124 B
build/styles/block-library/term-template/style.min.css 114 B
build/styles/block-library/text-columns/editor-rtl.css 481 B
build/styles/block-library/text-columns/editor-rtl.min.css 95 B
build/styles/block-library/text-columns/editor.css 481 B
build/styles/block-library/text-columns/editor.min.css 95 B
build/styles/block-library/text-columns/style-rtl.css 177 B
build/styles/block-library/text-columns/style-rtl.min.css 165 B
build/styles/block-library/text-columns/style.css 177 B
build/styles/block-library/text-columns/style.min.css 165 B
build/styles/block-library/theme-rtl.css 1.59 kB
build/styles/block-library/theme-rtl.min.css 715 B
build/styles/block-library/theme.css 1.6 kB
build/styles/block-library/theme.min.css 719 B
build/styles/block-library/verse/style-rtl.css 155 B
build/styles/block-library/verse/style-rtl.min.css 137 B
build/styles/block-library/verse/style.css 155 B
build/styles/block-library/verse/style.min.css 137 B
build/styles/block-library/video/editor-rtl.css 825 B
build/styles/block-library/video/editor-rtl.min.css 415 B
build/styles/block-library/video/editor.css 826 B
build/styles/block-library/video/editor.min.css 416 B
build/styles/block-library/video/style-rtl.css 1.02 kB
build/styles/block-library/video/style-rtl.min.css 202 B
build/styles/block-library/video/style.css 1.02 kB
build/styles/block-library/video/style.min.css 202 B
build/styles/block-library/video/theme-rtl.css 967 B
build/styles/block-library/video/theme-rtl.min.css 134 B
build/styles/block-library/video/theme.css 967 B
build/styles/block-library/video/theme.min.css 134 B
build/styles/commands/style-rtl.css 1.86 kB
build/styles/commands/style-rtl.min.css 1 kB
build/styles/commands/style.css 1.86 kB
build/styles/commands/style.min.css 1 kB
build/styles/components/style-rtl.css 17.6 kB
build/styles/components/style-rtl.min.css 14.4 kB
build/styles/components/style.css 17.7 kB
build/styles/components/style.min.css 14.4 kB
build/styles/customize-widgets/style-rtl.css 2.35 kB
build/styles/customize-widgets/style-rtl.min.css 1.44 kB
build/styles/customize-widgets/style.css 2.35 kB
build/styles/customize-widgets/style.min.css 1.44 kB
build/styles/edit-post/classic-rtl.css 1.29 kB
build/styles/edit-post/classic-rtl.min.css 426 B
build/styles/edit-post/classic.css 1.31 kB
build/styles/edit-post/classic.min.css 427 B
build/styles/edit-post/style-rtl.css 4.07 kB
build/styles/edit-post/style-rtl.min.css 2.63 kB
build/styles/edit-post/style.css 4.07 kB
build/styles/edit-post/style.min.css 2.63 kB
build/styles/edit-site/style-rtl.css 20.4 kB
build/styles/edit-site/style-rtl.min.css 16.5 kB
build/styles/edit-site/style.css 20.4 kB
build/styles/edit-site/style.min.css 16.5 kB
build/styles/edit-widgets/style-rtl.css 5.25 kB
build/styles/edit-widgets/style-rtl.min.css 3.85 kB
build/styles/edit-widgets/style.css 5.24 kB
build/styles/edit-widgets/style.min.css 3.85 kB
build/styles/editor/style-rtl.css 23.2 kB
build/styles/editor/style-rtl.min.css 19.7 kB
build/styles/editor/style.css 23.2 kB
build/styles/editor/style.min.css 19.7 kB
build/styles/format-library/style-rtl.css 735 B
build/styles/format-library/style-rtl.min.css 326 B
build/styles/format-library/style.css 746 B
build/styles/format-library/style.min.css 326 B
build/styles/list-reusable-blocks/style-rtl.css 1.07 kB
build/styles/list-reusable-blocks/style-rtl.min.css 250 B
build/styles/list-reusable-blocks/style.css 1.07 kB
build/styles/list-reusable-blocks/style.min.css 249 B
build/styles/media-utils/style-rtl.css 1.61 kB
build/styles/media-utils/style-rtl.min.css 745 B
build/styles/media-utils/style.css 1.61 kB
build/styles/media-utils/style.min.css 742 B
build/styles/nux/style-rtl.css 1.48 kB
build/styles/nux/style-rtl.min.css 622 B
build/styles/nux/style.css 1.5 kB
build/styles/nux/style.min.css 618 B
build/styles/patterns/style-rtl.css 1.46 kB
build/styles/patterns/style-rtl.min.css 611 B
build/styles/patterns/style.css 1.46 kB
build/styles/patterns/style.min.css 611 B
build/styles/preferences/style-rtl.css 1.26 kB
build/styles/preferences/style-rtl.min.css 415 B
build/styles/preferences/style.css 1.26 kB
build/styles/preferences/style.min.css 415 B
build/styles/reusable-blocks/style-rtl.css 1.11 kB
build/styles/reusable-blocks/style-rtl.min.css 275 B
build/styles/reusable-blocks/style.css 1.11 kB
build/styles/reusable-blocks/style.min.css 275 B
build/styles/theme/style-rtl.css 2.7 kB
build/styles/theme/style-rtl.min.css 1.39 kB
build/styles/theme/style.css 2.7 kB
build/styles/theme/style.min.css 1.39 kB
build/styles/widgets/style-rtl.css 2.04 kB
build/styles/widgets/style-rtl.min.css 1.15 kB
build/styles/widgets/style.css 2.04 kB
build/styles/widgets/style.min.css 1.15 kB

compressed-size-action

@t-hamano t-hamano force-pushed the stabilize-php-only-blocks branch from 695193a to 26ea3a5 Compare February 14, 2026 13:27
@t-hamano t-hamano added [Type] Enhancement A suggestion for improvement. [Feature] Block API API that allows to express the block paradigm. labels Feb 14, 2026
@t-hamano t-hamano self-assigned this Feb 14, 2026
@t-hamano t-hamano force-pushed the stabilize-php-only-blocks branch from 332d0fa to 5868968 Compare February 14, 2026 14:08
@t-hamano t-hamano changed the title Stabilize PHP only blocks Stabilize PHP-Only Block Registration Feb 14, 2026
@t-hamano t-hamano marked this pull request as ready for review February 14, 2026 14:28
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 14, 2026

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: t-hamano <wildworks@git.wordpress.org>
Co-authored-by: ramonjd <ramonopoly@git.wordpress.org>
Co-authored-by: youknowriad <youknowriad@git.wordpress.org>
Co-authored-by: mcsf <mcsf@git.wordpress.org>
Co-authored-by: gziolo <gziolo@git.wordpress.org>
Co-authored-by: mtias <matveb@git.wordpress.org>
Co-authored-by: proweb <vyatka@git.wordpress.org>
Co-authored-by: caseyjmilne <arcwp@git.wordpress.org>
Co-authored-by: annezazu <annezazu@git.wordpress.org>
Co-authored-by: tyxla <tyxla@git.wordpress.org>
Co-authored-by: priethor <priethor@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@t-hamano t-hamano mentioned this pull request Feb 14, 2026
3 tasks
@t-hamano t-hamano moved this to 🏗️ In Progress in WordPress 7.0 Editor Tasks Feb 14, 2026
@t-hamano t-hamano moved this from 🏗️ In Progress to 🔎 Needs Review in WordPress 7.0 Editor Tasks Feb 14, 2026
@github-actions
Copy link
Copy Markdown

Flaky tests detected in 5868968.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/22018787029
📝 Reported issues:

@ramonjd
Copy link
Copy Markdown
Member

ramonjd commented Feb 19, 2026

Hi @t-hamano

I think maybe it's this:

https://github.com/WordPress/gutenberg/blob/a579646cdd9a129f33578778b5be1523b19e79fe/packages/e2e-tests/plugins/block-bindings.php

Context: #75137 (comment)

@talldan
Copy link
Copy Markdown
Contributor

talldan commented Feb 20, 2026

It's installed by default in the wp-env-test environment, so easiest thing would be to start that (npm run wp-env-test run) and test there.

@t-hamano
Copy link
Copy Markdown
Contributor Author

Thanks for letting me know. I tested it again using the code below and that plugin.

Details
function gutenberg_register_php_only_blocks() {
	register_block_type(
		'my-plugin/example',
		array(
			'title'           => 'My Example Block',
			'attributes'      => array(
				'title'   => array(
					'type'    => 'string',
					'default' => 'Hello World',
				),
				'count'   => array(
					'type'    => 'integer',
					'default' => 10,
				),
				'enabled' => array(
					'type'    => 'boolean',
					'default' => false,
				),
				'size'    => array(
					'type'    => 'string',
					'enum'    => array( 'small', 'medium', 'large' ),
					'default' => 'medium',
				),
			),
			'render_callback' => function ( $attributes ) {
				return sprintf(
					'<div %1$s>
						<p>Title: %2$s</p>
						<p>Count: %3$d</p>
						<p>Enabled: %4$s</p>
						<p>Size: %5$s</p>
					</div>',
					get_block_wrapper_attributes(),
					esc_html( $attributes['title'] ),
					$attributes['count'],
					$attributes['enabled'] ? 'true' : 'false',
					esc_html( $attributes['size'] )
				);
			},
			'supports'        => array(
				'autoRegister' => true,
			),
		)
	);
}
add_action( 'init', 'gutenberg_register_php_only_blocks' );

function gutenberg_add_binding_support_to_php_block() {
	return array( 'title', 'count', 'enabled', 'size' );
}
add_filter( 'block_bindings_supported_attributes_my-plugin/example', 'gutenberg_add_binding_support_to_php_block' );
image

It certainly doesn't work with some fields, and I get errors in the response due to server-side rendering.

I'm wondering where I should disable binding support for PHP-Only Blocks. For example, would it look like this?

function gutenberg_get_block_bindings_supported_attributes( $block_type ) {
	// ...

	// For now, exclude attributes with `autoGenerateControl` flag from blocks with `autoRegister` support.
	// These attributes are currently meant to be edited via auto-generated inspector controls, not via
	// block bindings.
	$block_type_registry = WP_Block_Type_Registry::get_instance();
	$block_type_object   = $block_type_registry->get_registered( $block_type );
	if ( $block_type_object && ! empty( $block_type_object->supports['autoRegister'] ) ) {
		$supported_block_attributes = array_filter(
			$supported_block_attributes,
			function ( $attribute_name ) use ( $block_type_object ) {
				$attribute_schema = $block_type_object->attributes[ $attribute_name ] ?? null;
				return ! ( isset( $attribute_schema['autoGenerateControl'] ) && $attribute_schema['autoGenerateControl'] );
			}
		);
		$supported_block_attributes = array_values( $supported_block_attributes );
	}

	return $supported_block_attributes;
}

@mcsf
Copy link
Copy Markdown
Contributor

mcsf commented Feb 20, 2026

I'm wondering where I should disable binding support for PHP-Only Blocks. For example, would it look like this?

Sounds reasonable, but why not go further? Why not disable it entirely for block types with autoRegister? What do we gain at the moment by trying to filter individual attributes with autoGenerateControl? In other words, what would the other attributes — the ones declared in the block type but for which we couldn't auto-generate controls — be?

@t-hamano
Copy link
Copy Markdown
Contributor Author

what would the other attributes — the ones declared in the block type but for which we couldn't auto-generate controls — be?

The hook that marks autoGenerateControl runs at priority 5.

add_filter( 'register_block_type_args', 'gutenberg_mark_auto_generate_control_attributes', 5 );

This means that if another plugin adds attributes via the register_block_type_args hook at a later priority, those attributes will not have autoGenerateControl applied.

This may be an edge case, but attributes added in that way do not auto-generate the control, so the block binding API should be available.

@mcsf
Copy link
Copy Markdown
Contributor

mcsf commented Feb 20, 2026

This may be an edge case, but attributes added in that way do not auto-generate the control, so the block binding API should be available.

Right, I can understand how other attributes would end up there, but I'm wanting to understand what actual use cases this may correspond to, and whether bindings should be supported there. Maybe yes, so let's try that approach.

@ellatrix ellatrix mentioned this pull request Feb 23, 2026
14 tasks
@ockham
Copy link
Copy Markdown
Contributor

ockham commented Feb 23, 2026

Apologies, I haven't gotten around to looking into this yet. I'll hopefully get a chance some time this week, once the 22.6 release is on track.

@mcsf
Copy link
Copy Markdown
Contributor

mcsf commented Feb 26, 2026

Proposed dev note below.

Question: Which props are due? I started small and only credited Héctor, but obviously many more people were involved in various degrees (Aki, me, and many reviewers).


PHP-only block registration

Developers can now create simple blocks using only PHP. This is meant for blocks that only need server-side rendering and aren’t meant to be highly interactive.

To do so, call register_block_type with the new autoRegister flag. Make sure to also provide a render_callback.

function gutenberg_register_php_only_blocks() {
	register_block_type(
		'my-plugin/example',
		array(
			'title'           => 'My Example Block',
			'attributes'      => array(
				'title'   => array(
					'type'    => 'string',
					'default' => 'Hello World',
				),
				'count'   => array(
					'type'    => 'integer',
					'default' => 5,
				),
				'enabled' => array(
					'type'    => 'boolean',
					'default' => true,
				),
				'size'    => array(
					'type'    => 'string',
					'enum'    => array( 'small', 'medium', 'large' ),
					'default' => 'medium',
				),
			),
			'render_callback' => function ( $attributes ) {
				return sprintf(
					'<div>%s: %d items (%s)</div>',
					esc_html( $attributes['title'] ),
					$attributes['count'],
					$attributes['size']
				);
			},
			'supports'        => array(
				'autoRegister' => true,
			),
		)
	);
}

add_action( 'init', 'gutenberg_register_php_only_blocks' );

These blocks will automatically appear in the editor without requiring any JavaScript registration, and, wherever possible, the editor will automatically generate controls in the Inspector Controls sidebar to allow users to edit block attributes:

php-blocks-autoregister

See https://core.trac.wordpress.org/ticket/64639 for more details.

Props to @priethor for the implementation.

@t-hamano
Copy link
Copy Markdown
Contributor Author

t-hamano commented Mar 2, 2026

@mcsf Thanks for writing a dev note!

I think it's worth mentioning the following:

  • In addition to opting into autoRegister support, a render_callback function must be defined.
    if ( ! empty( $block_type->supports['autoRegister'] ) && ! empty( $block_type->render_callback ) ) {
    $auto_register_blocks[] = $block_name;
    }
  • Controls will not be generated for attributes with the local role or for attributes whose types are not supported.
    // Skip internal attributes (not user-configurable).
    if ( isset( $attr_schema['role'] ) && 'local' === $attr_schema['role'] ) {
    continue;
    }
    // Skip unsupported types (only 'string', 'number', 'integer', 'boolean' are supported).
    $type = $attr_schema['type'] ?? null;
    if ( ! in_array( $type, array( 'string', 'number', 'integer', 'boolean' ), true ) ) {
    continue;
    }

Question: Which props are due? I started small and only credited Héctor, but obviously many more people were involved in various degrees (Aki, me, and many reviewers).

I think the props listed in the Dev Notes are generally not those who worked on the feature, but rather those who reviewed the Dev Notes. For example:

Props to @john, @emily, and @michael for review

@mcsf
Copy link
Copy Markdown
Contributor

mcsf commented Mar 2, 2026

Thanks for the review, @t-hamano!

In addition to opting into autoRegister support, a render_callback function must be defined.

I did mention that, but I can reword it slightly for emphasis.

Controls will not be generated for attributes […]

You're right. I only hinted at it ("wherever possible") but didn't expand.

I think the props listed in the Dev Notes are generally not those who worked on the feature, but rather those who reviewed the Dev Notes

Hm, right. I saw a block-binding dev note assignning implementation props and thought of doing the same. Actually, in this case, since @priethor was the main implementor and is currently on leave and unable to contribute, I'd still like to name him (he'd be the one writing the dev note if he were around). Is that ok?

With all the feedback, see my revised draft:


PHP-only block registration

Developers can now create simple blocks using only PHP. This is meant for blocks that only need server-side rendering and aren’t meant to be highly interactive.

To do so, call register_block_type with the new autoRegister flag. Note that a render_callback function must also be provided:

function gutenberg_register_php_only_blocks() {
	register_block_type(
		'my-plugin/example',
		array(
			'title'           => 'My Example Block',
			'attributes'      => array(
				'title'   => array(
					'type'    => 'string',
					'default' => 'Hello World',
				),
				'count'   => array(
					'type'    => 'integer',
					'default' => 5,
				),
				'enabled' => array(
					'type'    => 'boolean',
					'default' => true,
				),
				'size'    => array(
					'type'    => 'string',
					'enum'    => array( 'small', 'medium', 'large' ),
					'default' => 'medium',
				),
			),
			'render_callback' => function ( $attributes ) {
				return sprintf(
					'<div>%s: %d items (%s)</div>',
					esc_html( $attributes['title'] ),
					$attributes['count'],
					$attributes['size']
				);
			},
			'supports'        => array(
				'autoRegister' => true,
			),
		)
	);
}

add_action( 'init', 'gutenberg_register_php_only_blocks' );

These blocks will automatically appear in the editor without requiring any JavaScript registration, and, wherever possible, the editor will automatically generate controls in the Inspector Controls sidebar to allow users to edit block attributes:

php-blocks-autoregister

Note that controls will not be generated for attributes with the local role or for attributes whose types are not supported.

See https://core.trac.wordpress.org/ticket/64639 for more details.

Props to priethor for the implementation.
Props to wildworks for reviewing this dev note.

[edit: removed @ from usernames to prevent pinging the wrong GH user]

@t-hamano
Copy link
Copy Markdown
Contributor Author

t-hamano commented Mar 2, 2026

Looks great!

since @priethor was the main implementor and is currently on leave and unable to contribute, I'd still like to name him (he'd be the one writing the dev note if he were around). Is that ok?

Of course I agree 👍

@mcsf
Copy link
Copy Markdown
Contributor

mcsf commented Mar 2, 2026

Post ready for publishing at https://make.wordpress.org/core/?p=121777&preview=1&_ppp=526c010ebc

@mcsf mcsf added has dev note when dev note is done (for upcoming WordPress release) and removed Needs Dev Note Requires a developer note for a major WordPress release cycle labels Mar 2, 2026
@ockham
Copy link
Copy Markdown
Contributor

ockham commented Mar 2, 2026

Apologies, I haven't gotten around to looking into this yet. I'll hopefully get a chance some time this week, once the 22.6 release is on track.

I finally managed to look into this. Here's a PR to have auto-generated attribute controls reflect bound attributes: #76040

I hope that this will allow us to keep Block Bindings enabled for this class of blocks 😊

@t-hamano
Copy link
Copy Markdown
Contributor Author

t-hamano commented Mar 3, 2026

Post ready for publishing at https://make.wordpress.org/core/?p=121777&preview=1&_ppp=526c010ebc

The Dev Note looks ready to be published 👍

@ockham
Copy link
Copy Markdown
Contributor

ockham commented Mar 4, 2026

One more PR to handle enum-constrained block attributes: #76085

@ts-mz
Copy link
Copy Markdown

ts-mz commented Mar 16, 2026

Not sure if this is a potential bug because it's so new and I might miss something - but I can't get php only blocks to render properly in the template previews. Their content will be rendered, but CSS that is applied either globally or per block and works in the site editor itself won't be used in the template previews (which makes them look broken). I don't have that issue with js-based blocks that use serversiderender.

@t-hamano
Copy link
Copy Markdown
Contributor Author

@ts-mz, could you report the issue in more detail in a new issue?

@ts-mz
Copy link
Copy Markdown

ts-mz commented Mar 16, 2026

@ts-mz, could you report the issue in more detail in a new issue?

Preparing to post the issue, I tried again with just a div in the block and a background in the css and suddenly it worked in both the js and php block (when including the same css file as block style). Not sure why it wouldn't work before, as this is exactly what I did before, but I still suspect it was something on my side and won't post an issue unless the problem resurfaces.

@Xilonz
Copy link
Copy Markdown

Xilonz commented Mar 17, 2026

Would it be possible to support the file: syntax for the render callback?
We use something like this as file structure:

/blocks/{blockname}/block.json
/blocks/{blockname}/block.css
/blocks/{blockname}/block.php <-- the rendered block

@t-hamano
Copy link
Copy Markdown
Contributor Author

@Xilonz Sorry, I'm not sure I follow. Could you explain that in a little more detail?

@Xilonz
Copy link
Copy Markdown

Xilonz commented Mar 17, 2026

@t-hamano I realized we can already render using the block.json, its just a different property render and works slightly different.

We use register_block_type_from_metadata this function 'maps' the render to the render_callback by including the specified file.

I was just looking wrong since style and script use the file:filename syntax, I expected a similar syntax for the render callback.

A minimal example for this block.json would be:

{
  "$schema": "https://schemas.wp.org/trunk/block.json",
  "name": "me/block",
  "title": "Example Block",
  "supports": {
    "autoRegister": true,
  }
  "style": "file:./block.css",
  "render": "block.php"
}

Maybe its useful to add this as note to the documentation in case others get confused too.

@t-hamano
Copy link
Copy Markdown
Contributor Author

@Xilonz, I might be misunderstanding something, but I think this feature is, as the name suggests, for registering blocks "using PHP only." It doesn't seem like defining the supports.autoRegister field in block.json is intended.

@Xilonz
Copy link
Copy Markdown

Xilonz commented Mar 17, 2026

There are 2 ways to register blocks using only PHP:
register_block_type_from_metadata and register_block_type (this function falls back to register_block_type_from_metadata if a path is provided).

I do suspect (i have to try it) that register_block_type_from_metadata just works with supports.autoRegister and that controls wil work as expected.

I think the confusion came from the linked Make article; this PR is has a much narrower scope.

@t-hamano
Copy link
Copy Markdown
Contributor Author

I do suspect (i have to try it) that register_block_type_from_metadata just works with supports.autoRegister and that controls wil work as expected.

My understanding is that register_block_type_from_metadata and supports.autoRegister are not intended to work together. This is because register_block_type_from_metadata requires a block.json file, and it's not "PHP-only." Isn't the purpose of a PHP-Only block to not even require a block.json file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Feature] Block API API that allows to express the block paradigm. has dev note when dev note is done (for upcoming WordPress release) [Package] Block editor /packages/block-editor [Type] Enhancement A suggestion for improvement.

Projects

Development

Successfully merging this pull request may close these issues.

Allow PHP-Only Block Registration

9 participants