Вы выполняете foreach со всеми терминами, а затем устанавливаете значение запроса внутри foreach, которое, конечно, будет содержать только последний термин, потому что вы переопределяете предыдущее значение каждый раз.Поскольку это множественный выбор, вы можете просто передать весь массив альбомов в WP_Query.Также убедитесь, что вы возвращаете значение идентификатора термина в ACF, а не в объекте термина.Затем вы обновите свой код, чтобы он выглядел примерно так:
<?php
$album_count = get_sub_field('album-count');
$albums = get_sub_field('album-custom-category'); ?>
<?php $the_query = new WP_Query(
array(
'post_type' => 'gallery',
'orderby' => 'date',
'posts_per_page' => 6,
'tax_query' => array(
array(
'taxonomy' => 'albums',
'field' => 'term_id', // This line can be removed since it’s the default. Just wanted to show that you’re passing the term is instead of slug.
'terms' => $albums,
),
),
),
); ?>