/** * Returns an array that contains data about all available templates. * @function wpb_block_template_infos * @since 1.0.0 */ function wpb_block_template_infos() { global $_block_template_infos_cache; if ($_block_template_infos_cache == null) { $_block_template_infos_cache = array(); foreach (wpb_block_template_paths() as $path) { foreach (glob($path . '/*', GLOB_ONLYDIR) as $path) { $type = str_replace(WP_CONTENT_DIR, '', $path); $data = wpb_read_json($path . '/block.json'); $data['category'] = isset($data['category']) ? $data['category'] : 'Uncategorized'; $data['fields'] = isset($data['fields']) ? $data['fields'] : array(); $data['styles'] = isset($data['styles']) ? $data['styles'] : array(); $data['buid'] = $type; $data['path'] = $path; if (wpb_user_has_access($data) == false) { continue; } foreach (glob($path . '/fields/*.json') as $file) { $data['fields'][] = wpb_read_json($file); } $_block_template_infos_cache[] = $data; } } usort($_block_template_infos_cache, function ($a, $b) { return strcmp($a['name'], $b['name']); }); $_block_template_infos_cache = apply_filters('wpb/block_template_infos', $_block_template_infos_cache); } return $_block_template_infos_cache; }
/** * Returns an array that contains data about all available templates. * @function wpb_block_template_infos * @since 0.1.0 */ function wpb_block_template_infos() { $block_template_infos = array(); foreach (wpb_block_template_paths() as $path) { foreach (glob($path . '/*', GLOB_ONLYDIR) as $path) { $type = str_replace(WP_CONTENT_DIR, '', $path); $data = wpb_read_json($path . '/block.json'); $data['buid'] = $type; $data['path'] = $path; $block_template_infos[] = $data; } } return apply_filters('wpb/block_template_infos', $block_template_infos); }
}); /** * @filter acf/get_field_groups * @since 0.1.0 */ add_filter('acf/get_field_groups', function ($field_groups) { if (get_post_type() != 'block') { return; } $post_id = $_GET['post']; $page_id = $_GET['page_id']; $page_blocks = array_filter(get_post_meta($page_id, '_page_blocks', true), function ($page_block) use($post_id) { return $page_block['post_id'] == $post_id; }); if ($page_blocks) { foreach ($page_blocks as $page_block) { $block_template = wpb_block_template_by_buid($page_block['buid']); if ($block_template == null) { continue; } $path = $block_template['path']; foreach (glob("{$path}/fields/*.json") as $file) { $json = wpb_read_json($file); $json['ID'] = null; $json['location'] = array(array(array('param' => 'post_type', 'operator' => '==', 'value' => 'block'))); $field_groups[] = $json; } } } return $field_groups; });