]*>.*?#s', '', $html ); } ); } function unset_core_supports($metadata){ $name = $metadata['name']; if (str_starts_with($name, 'core/') ) { unset($metadata['supports']['color']); unset($metadata['supports']['typography']); unset($metadata['supports']['border']); } return $metadata; } function allowed_list($allowed){ return array_merge($allowed, [ // 'core/categories', ]); } function add_categories( $categories ) { // Adding a new category. $categories = array_merge([ [ 'slug' => 'badegg', 'title' => __('Provided by Bad Egg Digital'), ], ], $categories); return $categories; } function auto_register() { $blocks = glob(get_theme_file_path('resources/views/blocks/*/block.json')); foreach ($blocks as $block_json) { $json = json_decode(file_get_contents($block_json)); $slug = basename(dirname($block_json)); $blockPath = "resources/views/blocks/{$slug}"; $viewScript = "{$blockPath}/view.js"; $script = "{$blockPath}/script.js"; $editorCSS = "{$blockPath}/editor.scss"; $style = "{$blockPath}/style.scss"; // editorStyle if (file_exists(get_theme_file_path($editorCSS))) { wp_register_style( "{$slug}-editor-style", \Vite::asset($editorCSS), [], null ); } // script if(file_exists(get_theme_file_path($script))) { wp_register_script( "{$slug}-script", \Vite::asset($script), [], null, true ); } // style if (file_exists(get_theme_file_path($style))) { wp_register_style( "{$slug}-style", \Vite::asset($style), [], null ); } // viewScript if(file_exists(get_theme_file_path($viewScript))) { wp_register_script( "{$slug}-view-script", \Vite::asset($viewScript), [], null, true ); } $props = [ 'editor_style' => "{$slug}-editor-style", 'style' => "{$slug}-style", 'script' => "{$slug}-script", 'view_script' => "{$slug}-view-script", 'attributes' => attributes(), ]; if(!property_exists($json, 'acf') && \Roots\view()->exists("blocks.{$slug}.render")) { $props['render_callback'] = function ($attributes, $content, $block) { $slug = basename($block->name); return \Roots\view("blocks.{$slug}.render", [ 'attributes' => $attributes, 'content' => $content, 'block' => $block, ]); }; } register_block_type($block_json, $props); } } function list_inner() { $file = file_get_contents(get_theme_file_path("resources/json/block-core-whitelist.json")); $json = json_decode($file); return $json; } function attributes() { $file = file_get_contents(get_theme_file_path("resources/json/block-attributes.json")); $json = json_decode($file, true); return $json; } function list_all() { $blocks = array_map(function($block) { $name = $block->name; return $block->name; }, \WP_Block_Type_Registry::get_instance()->get_all_registered()); return array_values($blocks); } function list_custom() { return array_filter(list_all(), function($value){ if (str_starts_with($value, 'acf/') || str_starts_with($value, 'badegg/')) return $value; }); } function list_allowed() { $add_allowed = []; return array_merge( list_custom(), list_inner(), apply_filters('badegg_block_types_allow', $add_allowed), ); } function render_acf($block, $content = '', $is_preview = false, $post_id = 0, $wp_block = false, $context = false) { $slug = basename($block['name']); $block['slug'] = $slug; $blade = \Roots\view( "blocks.{$slug}.render", [ 'block' => $block, 'content' => $content, 'is_preview' => $is_preview, 'post_id' => $post_id, 'wp_block' => $wp_block, 'context' => $context, ], ); if($blade) { echo $blade; } else { ob_start(); ?>

Missing Blade Template

(resources/views/blocks//render.blade.php)

', '
', $content); $content = str_replace('', '
', $content); return $content; } function core_image_modified($content, $block) { $imageID = @$block['attrs']['id']; $lazy = wp_get_attachment_image_src($imageID, 'lazy'); $large = wp_get_attachment_image_src($imageID, '2048x2048'); $dom = new \DomDocument(); $dom->strictErrorChecking = false; @$dom->loadHTML($content); @$images = $dom->getElementsByTagName('img'); // create lightbox link node $link = $dom->createElement('a'); $link->setAttribute('class', 'badegg-lightbox'); $link->setAttribute('target', '_blank'); $link->setAttribute('role', 'button'); $link->setAttribute('tabindex', '0'); $link->setAttribute('aria-label', __('expand image', 'badegg')); foreach($images as $image) { // define new image attributes $src = $image->getAttribute('src'); $srcset = $image->getAttribute('srcset'); $class = $image->getAttribute('class'); // set image attributes $image->setAttribute('src', $lazy[0]); $image->setAttribute('srcset', ''); $image->setAttribute('data-src', $src); $image->setAttribute('data-srcset', $srcset); $image->setAttribute('class', $class . ' lazy'); // clone lightbox link $linkClone = $link->cloneNode(); // set lightbox link attributes $linkClone->setAttribute('href', $large[0]); // replace image with lightbox link $image->parentNode->replaceChild($linkClone, $image); // append original image to lightbox link $linkClone->appendChild($image); } return $dom->saveHTML(); }