<?php function render_block_core_block($attributes) { static $seen_refs = array(); if (empty($attributes['ref'])) { return ''; } $reusable_block = get_post($attributes['ref']); if (!$reusable_block || 'wp_block' !== $reusable_block->post_type) { return ''; } if (isset($seen_refs[$attributes['ref']])) { if (!is_admin()) { trigger_error(sprintf(__('Could not render Reusable Block <strong>%s</strong>: blocks cannot be rendered inside themselves.'), $reusable_block->post_title), E_USER_WARNING); } $is_debug = defined('WP_DEBUG') && WP_DEBUG && defined('WP_DEBUG_DISPLAY') && WP_DEBUG_DISPLAY; return $is_debug ? __('[block rendering halted]') : ''; } if ('publish' !== $reusable_block->post_status || !empty($reusable_block->post_password)) { return ''; } $seen_refs[$attributes['ref']] = true; $result = do_blocks($reusable_block->post_content); unset($seen_refs[$attributes['ref']]); return $result; } function register_block_core_block() { register_block_type_from_metadata(__DIR__ . '/block', array('render_callback' => 'render_block_core_block')); } add_action('init', 'register_block_core_block');