Если не хочешь заморачиваться — ставь WP All Import, он json хавает на ура и может постить прямо в кастомные типы. Я так сам делал, реально пару кликов. Можно и вручную через json_decode и wp_insert_post, но тогда придется с ACF полями ебаться отдельно.
Есть ещё вариант через REST API, если JSON уже лежит на другом сервисе или вы хотите автоматизировать импорт без плагина. Сначала убедитесь, что ваш кастомный тип постов зарегистрирован с `show_in_rest => true`. Затем можно отправлять данные напрямую: авторизуйтесь через Application Password и шлите POST-запрос на `/wp-json/wp/v2/{ваш_тип_поста}` с телом JSON. Внутри `wp_insert_post` не нужен, но придётся маппить поля: заголовок, контент, таксономии, а для произвольных полей — использовать `meta` в запросе.
Если JSON вложенный или содержит галереи/изображения, лучше написать небольшой скрипт на PHP или WP-CLI: читаете файл, `json_decode`, проходите по массиву, для каждого элемента создаёте пост через `wp_insert_post`, а для картинок — `media_handle_sideload`. Так вы контролируете каждое поле и не зависите от ограничений плагина.
Главный подводный камень — кодировка и слаги. Убедитесь, что JSON в UTF-8 и что вы задаёте уникальные `post_name`, иначе дубликаты не избежать. Перед массовым импортом всегда делайте тестовый прогон на 2–3 записях и проверяйте, как отображаются ACF-поля и таксономии.