Nested loop Briks Builder

Hi everyone,

I’m having trouble with the second loop in my function not working as expected in the backend. However, when I call the function run_second_query() directly in the frontend using <?php print_r(run_second_query()); ?>, it displays the data correctly as expected.

Here’s the relevant code:

// Add new query type controls to query options
add_filter(‘bricks/setup/control_options’, ‘bl_setup_query_controls’);
function bl_setup_query_controls($control_options) {
$customQueries = [
‘1_query’ => esc_html__(‘1 Query’),
‘2_query’ => esc_html__(‘2 Query’),
];
$control_options[‘queryTypes’] = array_merge($control_options[‘queryTypes’], $customQueries);
return $control_options;
}

// Run new query if option selected
add_filter(‘bricks/query/run’, ‘bl_maybe_run_new_queries’, 10, 2);
function bl_maybe_run_new_queries($results, $query_obj) {
switch ($query_obj->object_type) {
case ‘1_query’:
return run_first_query();
case ‘2_query’:
return run_second_query();
default:
return $results;
}
}

// Setup post data for posts
add_filter(‘bricks/query/loop_object’, ‘bl_setup_post_data’, 10, 3);
function bl_setup_post_data($loop_object, $loop_key, $query_obj) {
if (in_array($query_obj->object_type, [‘1_query’, ‘2_query’])) {
global $post;
$original_post = $post;

    $post = get_post($loop_object);
    setup_postdata($post);

    wp_reset_postdata();
    $post = $original_post;
}
return $loop_object;

}

// Unified query function
function run_query($meta_key) {
$code = get_post_meta(get_the_ID(), $meta_key, true);

if (!empty($code)) {
    $jsonStringDoubleQuotes = str_replace("'", '"', $code);
    $data = json_decode($jsonStringDoubleQuotes, true);
    return json_last_error() === JSON_ERROR_NONE ? $data : [];
}

return [];

}

// 1 Query
function run_first_query() {
return run_query(‘code’);
}

// 2 Query
function run_second_query() {
$loop_object = \Bricks\Query::get_loop_object();
if (is_array($loop_object) && isset($loop_object[‘images’])) {
return $loop_object[‘images’];
} else {
return ;
}
}

// Get custom loop object property
function get_custom_loop_object_property($name) {
$loop_object = \Bricks\Query::get_loop_object();
return is_array($loop_object) && array_key_exists($name, $loop_object) ? $loop_object[$name] : false;
}