ACF\Blocks\AutoInlineEditing

apply_inline_editing_attributes_to_render_callback()ACF 1.0

Applies inline editing attributes to dom elements if they contain field values.

No Hooks.

Returns

String.

Usage

apply_inline_editing_attributes_to_render_callback( $render_callback, $block, $content, $is_preview, $post_id, $wp_block, $context ): string;
$render_callback(string) (required)
The callback function that renders the block preview/output.
$block(array) (required)
The block data.
$content(string) (required)
The block content.
$is_preview(true|false) (required)
Whether we are in the block editor or not.
$post_id(int) (required)
The current post being edited or viewed.
$wp_block(WP_Block|null) (required)
The block instance (since WP 5.5).
$context(array) (required)
The block context array.

apply_inline_editing_attributes_to_render_callback() code ACF 6.8.8

function apply_inline_editing_attributes_to_render_callback( $render_callback, $block, $content, $is_preview, $post_id, $wp_block, $context ): string {
	global $acf_fields_used_in_block_render_template, $acf_blocks_doing_auto_inline_editing, $acf_blocks_doing_auto_inline_editing_block_id;

	// Save the entire previous render context (fields collected, doing-flag, block id) so a
	// nested ACF block render does not clobber the parent's tracked fields or active block id.
	$previous_fields                    = is_array( $acf_fields_used_in_block_render_template ) ? $acf_fields_used_in_block_render_template : array();
	$previous_doing_auto_inline_editing = ! empty( $acf_blocks_doing_auto_inline_editing );
	$previous_block_id                  = $acf_blocks_doing_auto_inline_editing_block_id ?? null;

	$acf_fields_used_in_block_render_template      = array();
	$acf_blocks_doing_auto_inline_editing          = true;
	$acf_blocks_doing_auto_inline_editing_block_id = $block['id'] ?? null;

	ob_start();
	call_user_func( $render_callback, $block, $content, $is_preview, $post_id, $wp_block, $context );
	$html = ob_get_clean();

	// Process the HTML before restoring the parent context - apply_inline_editing_attributes_to_html_string()
	// reads $acf_fields_used_in_block_render_template via global, so it must see THIS block's field list.
	$processed_html = apply_inline_editing_attributes_to_html_string( $html, $block );

	$acf_fields_used_in_block_render_template      = $previous_fields;
	$acf_blocks_doing_auto_inline_editing          = $previous_doing_auto_inline_editing;
	$acf_blocks_doing_auto_inline_editing_block_id = $previous_block_id;

	return $processed_html;
}