@dimalepel в таком случае нужно сначала собрать данные со страниц, а затем вывести. Вот рабочий вариант:
Предполагается, что страница вывода (например главная) тоже имеет доп.поле ‘Yandex Map for ACF’. В это поле не нужно добавлять метки.
Из него будут браться общие параметры карты (начальные координаты, слой и т.д.)
functions.php
/**
* @param array $post_ids ID записей от куда надо взять метки
*/
function the_multiple_yandex_map($post_ids = array())
{
$marks = array(); // Все метки
$marks_counter = 1;
foreach ($post_ids as $post_id) {
$data = (array)json_decode(get_field('map_field', $post_id, false), true); // загрузка меток из записи
if (!isset($data['marks']) || !is_array($data['marks'])) {
continue;
}
foreach ((array)$data['marks'] as $mark) {
$mark['id'] = $marks_counter;
$marks[] = $mark;
$marks_counter++;
}
}
$map_data = (array)json_decode(get_field('map_field', get_the_ID(), false), true); // загрузка параметров карты для вывода всех меток
$map_data['marks'] = $marks;
the_yandex_map('', false, json_encode($map_data));
}
А в шаблоне функцию нужно вызвать так:
the_multiple_yandex_map(array(1,5));
В качестве аргумента функции массив с идентификаторами записей от куда нужно взять метки.