Чтобы изменить путь, по которому сохраняются фотографии в WordPress, используя заранее определённую дату загрузки, вам нужно будет установить фильтр `upload_dir` и настроить его основываясь на переданной дате. Вместо использования `current_time()`, вы можете обработать дату, которую вы получаете из вашего скрипта на Python.
Ниже приведённый код позволит вам настроить путь загрузки с использованием даты, которую вы передаете. Вам нужно будет убедиться, что форматированная дата является корректной, и её можно разбить на компоненты (год, месяц и день):
```php
function custom_upload_dir( $uploads ) {
// Предположим, что вы передаете дату в формате 'YYYY-MM-DD' через параметры запроса
if ( isset( $_GET['upload_date'] ) ) {
$upload_date = sanitize_text_field( $_GET['upload_date'] ); // Экранируем входные данные
// Проверяем, что дата в правильном формате
if ( preg_match( '/^\d{4}-\d{2}-\d{2}$/', $upload_date ) ) {
$year = substr( $upload_date, 0, 4 );
$month = substr( $upload_date, 5, 2 );
$day = substr( $upload_date, 8, 2 );
// Изменяем подкаталог на основе переданной даты
$uploads['subdir'] = '/' . $year . '/' . $month . '/' . $day;
$uploads['path'] = $uploads['basedir'] . $uploads['subdir'];
$uploads['url'] = $uploads['baseurl'] . $uploads['subdir'];
}
}
return $uploads;
}
add_filter( 'upload_dir', 'custom_upload_dir' );
```
### Объяснение кода:
1. **Извлечение даты:** Мы извлекаем дату загрузки из параметров запроса (например, при использовании скрипта на Python) и очищаем её с помощью `sanitize_text_field()`.
2. **Проверка формата:** Используем регулярное выражение, чтобы убедиться, что дата передана в формате "YYYY-MM-DD".
3. **Разбиение даты:** Извлекаем год, месяц и день из переданной даты.
4. **Обновление пути:** Обновляем подкаталог загрузки на основе переданной даты, создавая нужные директории для хранения загружаемых фотографий.
5. **Добавление фильтра:** Применяем фильтр `upload_dir`, чтобы изменения вступили в силу при загрузке файлов.
### Примечания:
- Убедитесь, что ваша система правильно обрабатывает и передает параметр `upload_date`; вам нужно будет вызывать загрузку через URL, например: `your-site.com/wp-admin/async-upload.php?upload_date=2023-10-15`.
- В этом примере конфигурация не учитывает случаи, когда дата не передана или передана в неправильном формате — вы можете добавить обработку ошибок в своем коде по необходимости.
- Убедитесь, что у вас есть права на создание папок на сервере в указанном месте.