Problem: There is no specific function in Drupal 8 which we can use to get all blocks assigned to a region. We used to have a function called block_get_blocks_by_region in Drupal 7 to do this
Solution : Although we don't have a specific function we have the tools in Drupal 8 s Object oriented hierarchy to do the same. Here is the code
function my_module_get_blocks_by_region($region) {
$blocks = \Drupal::entityTypeManager()
->getStorage('block')->loadByProperties([
'theme' => \Drupal::theme()->getActiveTheme()->getName(),
'region' => $region,
]);
uasort($blocks, 'Drupal\block\Entity\Block::sort');
$build = [];
foreach ($blocks as $key => $block) {
if ($block->access('view')) {
$build[$key] = entity_view($block, 'block');
}
}
return $build;
}