Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lib: Make WP_Block->available_context public. #22334

Closed

Conversation

epiqueras
Copy link
Contributor

@epiqueras epiqueras added [Type] Bug An existing feature does not function as intended [Feature] Full Site Editing labels May 13, 2020
@epiqueras epiqueras requested a review from aduth May 13, 2020 21:07
@epiqueras epiqueras self-assigned this May 13, 2020
@github-actions
Copy link

Size Change: 0 B

Total Size: 833 kB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.59 kB 0 B
build/block-directory/style-rtl.css 764 B 0 B
build/block-directory/style.css 764 B 0 B
build/block-editor/index.js 104 kB 0 B
build/block-editor/style-rtl.css 10.8 kB 0 B
build/block-editor/style.css 10.8 kB 0 B
build/block-library/editor-rtl.css 7.25 kB 0 B
build/block-library/editor.css 7.25 kB 0 B
build/block-library/index.js 118 kB 0 B
build/block-library/style-rtl.css 7.48 kB 0 B
build/block-library/style.css 7.49 kB 0 B
build/block-library/theme-rtl.css 683 B 0 B
build/block-library/theme.css 685 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/components/index.js 182 kB 0 B
build/components/style-rtl.css 17.1 kB 0 B
build/components/style.css 17 kB 0 B
build/compose/index.js 6.68 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.43 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.1 kB 0 B
build/edit-navigation/index.js 5.6 kB 0 B
build/edit-navigation/style-rtl.css 618 B 0 B
build/edit-navigation/style.css 617 B 0 B
build/edit-post/index.js 28.1 kB 0 B
build/edit-post/style-rtl.css 12.2 kB 0 B
build/edit-post/style.css 12.2 kB 0 B
build/edit-site/index.js 12.1 kB 0 B
build/edit-site/style-rtl.css 5.22 kB 0 B
build/edit-site/style.css 5.22 kB 0 B
build/edit-widgets/index.js 8.37 kB 0 B
build/edit-widgets/style-rtl.css 4.69 kB 0 B
build/edit-widgets/style.css 4.69 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/index.js 44.3 kB 0 B
build/editor/style-rtl.css 5.07 kB 0 B
build/editor/style.css 5.08 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.63 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 712 B 0 B
build/keyboard-shortcuts/index.js 2.51 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.13 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 5.29 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 14.8 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.02 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@aduth aduth mentioned this pull request May 14, 2020
6 tasks
@epiqueras
Copy link
Contributor Author

Closing in favor of #22364.

@epiqueras epiqueras closed this May 14, 2020
@aristath aristath deleted the update/make-wp-block-available-context-public branch November 10, 2020 14:31
@albanyacademy
Copy link

albanyacademy commented Jul 20, 2023

Can we reopen this? @epiqueras

My use case is a little extreme, but it essentially boils down to:

  1. I'm using a custom block implementation that only uses serverside render callbacks;
  2. I don't want inner_blocks to be automatically parsed all the time as in class-wp-block.php:228 and 159
  3. instead, i want to parse them myself and pass contexts like a "rendered inner block index".
  4. This means I can't rely on the WP_Block_List generated in class-wp-block.php:159, as the $child_context is the same for all inner_blocks.
  5. I need to essentially do my own version, and my serverside template's inner block rendering looks like this:
	public function renderInnerBlocks($contexts = [], $isDynamic = true)
	{
		$index = 0;
		if ($this->innerBlocks) {
			foreach ($this->innerBlocks as $innerBlock) {
                                 // this is a custom array entry in the $parsed_block
				$innerBlock['customContexts'] = array_merge(
					$this->context,  // merged wp_block->context and wp_block->available_context (the latter is always empty)
					$this->providesContext, // custom block method to generate its own provided contexts
					['custom/innerBlockIndex' => $index], // iterative context useful for tabs and accordions (which one is first etc)
					$contexts, // custom ones passed in per block type
				);
 				$innerBlock = new WP_Block($innerBlock);
				echo $innerBlock->render(['dynamic' => $isDynamic]);
				$index++;
			}
		}
	}

So as you can see, I do have a workaround in place, but it does feel like a missed opportunity. Even if it wasn't public, there are no real opportunities/hooks to do fun things with block context if you're going the dynamic/skip_inner_blocks route. This pretty much only happens in scenarios where you wouldn't rely on the WP_Block_List generated as part of wp_block's construct.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants