예제 #1
0
/**
 * 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;
}
예제 #2
0
/**
 * 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);
}
예제 #3
0
});
/**
 * @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;
});