посмотри в архиве данные для записей. там есть до...

Создано: 21 сентября 2026 г.

Отвечено с использованием GPT-5.6 Thinking от Chat01

Вопрос

003_remont-detalej-buldozera-cat.zip
screencapture-mehpark-ru-2026-09-21-10_55_14.png
image.png
WordPress.2026-09-21.xml

посмотри в архиве данные для записей. там есть документ ворд с содержанием записи и инструкцией, фото.
в итоге нам нужно получить публикацию такого плана как на скриншоте. все публикации будут в одном формате. паспорт,
что поступило в ремонт и ниже заголовки h2, галереи. прикрепляю пример в экспорте такой публикации. в вордовском файле есть инструкции куда какие фото идут, есть ссылка, ее нужно использовать для url записей в экспорте.
получается нам нужно написать на php программу обработчик, которая из папки будет брать публикации расфасованные по папкам как я тебе показала и на основе этого сформирует файл для экспорта.
напиши мне программку и пошаговый план как это все сделать локально. папок 200 штук, в каждой 1 публикация. можн обрабатывать частями

Мысль

Clarifying export strategy

I’m distinguishing a standard WXR export from a custom PHP importer. Because local images aren’t directly readable during WXR import, I’m considering source URLs, temporary hosting, or running the importer inside WordPress.

Clarified export strategy

Мысль

Mapping export details

I’m checking whether the export should include one post or many, plus attachments, taxonomy terms, slugs, and custom metadata. Existing term IDs may remain valid on the destination, but slugs and mappings need careful handling.

Mapped export details

Мысль

Inspected ZIP, DOCX, article, and WordPress export structures

Мысль

Parsing dates and terms

I’m planning configurable date conversion, including the site’s likely local timezone, while preserving original publication timing. I’m also considering a direction-slug map because transliteration may differ from WordPress’s existing taxonomy slugs.

Validating taxonomy mappings

I’m considering whether taxonomy relationships alone are sufficient or whether custom direction IDs are required. I’ll make mappings configurable, preserve known terms, and flag missing IDs rather than silently creating incorrect relationships.

Parsed dates and validated taxonomy mappings

Searching the web

Мысль

Built and validated a WordPress WXR importer toolkit package

Worked for 7m 49s

Ответ

Да. Я посмотрел архив, структуру article.docx, article.json, фотографии и ваш пример WordPress Export XML. Под это уже собрал рабочий PHP-обработчик и прогнал его на трёх папках из архива: получилось 3 записи + 36 вложений, XML корректно разбирается как WXR.

Скачать весь комплект ZIP

Отдельно: build-wxr.php · config.example.php · подробная инструкция README · пример сформированного XML · пример отчёта CSV

Что делает программа

Она берет каждую подпапку как одну публикацию и сама:

  • читает заголовок из Word;
  • находит строку Источник: https://www.1grc.ru/post/...;
  • берет последний сегмент этой ссылки для URL новой записи, то есть
    .../post/remont-detalej-buldozera-cat
    https://mehpark.ru/praktika-remonta/remont-detalej-buldozera-cat;
  • берет дату исходной публикации;
  • Краткое описание записывает в excerpt;
  • читает таблицу «Паспорт заказа» и заполняет ваши _mehpark_passport_*;
  • создает H2 «Что поступило в ремонт», «Что сделали», «Результат»;
  • читает блок «Размещение фотографий»;
  • фото, указанное как обложка, делает featured image;
  • фото «ход ремонта» делает галереей под «Что сделали»;
  • фото «результат» ставит под «Результат»;
  • поддерживает отдельные фото «исходного состояния» под первым разделом;
  • направления ремонта записывает как mehpark_repair_topic;
  • повторяет ваши служебные Gutenberg-блоки из эталонного экспорта;
  • формирует WXR XML, который можно загрузить через Инструменты → Импорт → WordPress;
  • параллельно делает CSV-отчёт с проблемными публикациями.

Для ваших 200 папок специально сделана пакетная обработка через --limit и --offset.

Как сделать локально

  1. Распакуйте все 200 папок, например в C:\mehpark-import\input. Внутри должны лежать именно папки публикаций с article.docx, фотографиями и, желательно, article.json.

  2. Распакуйте мой комплект, скопируйте config.example.php в config.php. Основные параметры сайта уже стоят под ваш вариант: https://mehpark.ru и /praktika-remonta.

  3. Проверьте, что PHP запускается:

bash
php -v

Никакой PhpWord ставить не требуется — DOCX программа читает сама.

  1. Сначала сделайте тест из 5 записей, обязательно черновиками:
bash
php build-wxr.php --input="C:\mehpark-import\input" --output="C:\mehpark-import\out\test.xml" --limit=5 --offset=0 --status=draft --media=source

На выходе получите test.xml и test-report.csv.

  1. В WordPress откройте Инструменты → Импорт → WordPress, загрузите test.xml, сопоставьте автора с admin и обязательно включите «Скачать и импортировать вложения». После этого проверьте несколько записей: slug, обложку, паспорт, направления, H2 и галереи.

  2. Если всё нормально, запускайте партиями, например по 20:

bash
php build-wxr.php --input="./input" --output="./out/batch-01.xml" --limit=20 --offset=0 --status=draft --media=source php build-wxr.php --input="./input" --output="./out/batch-02.xml" --limit=20 --offset=20 --status=draft --media=source php build-wxr.php --input="./input" --output="./out/batch-03.xml" --limit=20 --offset=40 --status=draft --media=source

Дальше соответственно offset=60, 80, 100 и т. д. Если после проверки хотите сразу публикации, меняете --status=draft на --status=publish.

  1. После каждой пачки смотрите CSV-отчёт. Например, в ваших тестовых данных программа уже заметила, что у двух записей ready_for_publish=false и в Word стоит «В источнике не указано» в разделе «Что сделали». Такие записи не теряются, но в отчете явно помечаются для ручной проверки.

Один важный момент с фотографиями

Формат WordPress WXR не умеет положить сами бинарные JPEG/WebP внутрь XML. XML содержит URL, по которым WordPress затем скачивает изображения.

Поэтому я сделал два режима.

--media=source использует source_url фотографий из вашего article.json. Для присланного архива этот режим уже работает.

Если же на локальных фотографиях были сделаны изменения — например, убран логотип и нужно импортировать именно локальную обработанную версию, используйте:

bash
--media=public --media-base="https://mehpark.ru/tmp-import/batch-01"

Перед этим фотографии партии надо временно выложить туда с сохранением структуры папок. WordPress скачает их в Media Library, после чего временный каталог можно удалить. Просто localhost здесь не подойдет, если импорт идет на удаленный mehpark.ru.

Ещё один нюанс: из вашего эталонного XML я смог точно определить ID направлений Грузовики = 17 и Передние мосты и балки = 26. Для остальных направлений программа импортирует taxonomy по имени/slug, но в config.php ID пока оставлены пустыми. Если ваш плагин обязательно использует также _mehpark_direction_ids, лучше один раз заполнить реальные ID всех направлений. Это уже предусмотрено в конфиге.

Я бы на вашем месте сначала импортировал именно созданный мной тестовый XML на 3 записи в черновики. Так мы сразу увидим, полностью ли ваш текущий шаблон/плагин принимает паспорт и направления именно так, как ожидается, прежде чем прогонять все 200.

Поделиться этим Q&A