Как сопоставить поля записей wordpress через плагин WP All Import?
Добрый день! Ситуация такая - у нас есть сайт на котором выгружаются треки от логистической компании. Клиенты вносят свои треки, а мы с помощью WP All Import синхронизируем их с выгрузкой от логиста. Но проблема в том, что логист к нашим номерам треков часто добавляет какие то свои приставки. И при выгрузке если номер трека не совпадает с тем, что в табличке от логиста, он пропускает его и данные по треку не обновляются. Как прописать в WP All Import, чтобы он сопоставлял записи так, чтобы он мог выгружать запись при условии ,что в title (мы title берем за условие) содержится хотя бы часть нужного нам текста.
Пример клиент заносит трек 9261290336107502977461 (title записи). У логиста он выглядит так 420198049261290336107502977461. Это один и тот же трек, но его не пропускает на обновление WP ALL Import, так как не совпадение. Как сделать так, что бы он его пропускал на обновление? Где то настройки в нем должны быть такие
Дополнительно:
Почему не синхронизацировать по ID (или другим полям)?
Или, как вариант скрипт на php - скормил ему csv а на выходе получил с правильными кодами.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В WP All Import сопоставление записей нужно строить вокруг уникального ключа. Если логист добавляет к вашему трек-номеру приставки, прямое сравнение “как есть” не сработает. Нужно нормализовать значение: убрать приставки, пробелы, лишние символы или выделить ваш внутренний номер регуляркой.
В WP All Import можно использовать PHP-функции в поле сопоставления. Например, создать функцию в
functions.phpили отдельном плагине:function normalize_track_number($value) { $value = trim((string) $value); $value = mb_strtoupper($value); $value = preg_replace('/[^A-ZА-Я0-9-]/u', '', $value); // пример: убрать известные приставки логиста $value = preg_replace('/^(LOG-|TRK-|CN-)/u', '', $value); return $value; }
Затем в WP All Import используйте нормализованное значение как Unique Identifier или записывайте его в meta-поле и обновляйте записи по нему.
Если приставки разные и непредсказуемые, лучше хранить два поля:
Так вы сможете диагностировать, почему конкретная строка не сопоставилась.
Если номер всегда находится внутри строки, можно вытаскивать его регуляркой. Например, если ваш номер — 8-12 цифр:
function extract_internal_track($value) { if (preg_match('/d{8,12}/', $value, $m)) { return $m[0]; } return trim($value); }
Перед массовым импортом обязательно сделайте dry run на копии и проверьте 20-30 строк: что обновилось, что создалось заново, какие номера не совпали.
Итог: не пытайтесь сопоставлять грязные треки напрямую. Нормализуйте номер функцией и используйте уже очищенное значение как ключ обновления в WP All Import.