ACF\Blocks\AutoInlineEditing
apply_inline_editing_attributes_to_render_callback()
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() 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;
}