Различный путь загрузки для каждого типа файла

Я хочу иметь два разных пути для разных файлов.

Например, у меня есть все .zip и файлы изображений в одном и том же месте.

Я хочу, чтобы изображения имели один путь (например, wp-content / uploads / images /)

И все zip-файлы в другом месте / пути (например, wp-content / uploads / products /)

Но то, что мне нужно, – это когда я добавляю либо в медиа-библиотеку при публикации нового сообщения для их ввода / загрузки в правильные пути автоматически.

Как я могу это сделать и это возможно?

Solutions Collecting From Web of "Различный путь загрузки для каждого типа файла"

Изменение каталога загрузки для файлов PDF кажется хорошим шагом вперед.

Хотя непроверенный, глядя на код, моя адаптация будет соответствовать …

<?php add_filter('wp_handle_upload_prefilter', 'custom_media_library_pre_upload'); add_filter('wp_handle_upload', 'custom_media_library_post_upload'); function custom_media_library_pre_upload($file){ add_filter('upload_dir', 'custom_media_library_custom_upload_dir'); return $file; } function custom_media_library_post_upload($fileinfo){ remove_filter('upload_dir', 'custom_media_library_custom_upload_dir'); return $fileinfo; } function custom_media_library_custom_upload_dir($path){ $extension = substr(strrchr($_POST['name'],'.'),1); if ( !empty( $path['error'] ) || $extension != 'zip' ) { return $path; } //error or other filetype; do nothing. elseif ( $extension = 'zip' ) { $customdir = '/products'; } elseif ( $extension = 'jpg' || $extension = 'jpeg' || $extension = 'gif' || $extension = 'png') { $customdir = '/images'; } $path['path'] = str_replace($path['subdir'], '', $path['path']); //remove default subdir (year/month) $path['url'] = str_replace($path['subdir'], '', $path['url']); $path['subdir'] = $customdir; $path['path'] .= $customdir; $path['url'] .= $customdir; return $path; } 

Это я буду придерживаться в functions.php вашей темы или в соответствующем файле темы – не в ядре wordpress, поскольку вы потеряете его при обновлении!

Вы также можете улучшить мой код, придерживаясь совпадений в массиве и сравнивая это, просто сделали это таким образом для простоты. Примером может быть …

 $imagetypes = array( 'jpg', 'jpeg', 'gif', 'png', 'etc'); if ( in_array( $extension, $imagetypes ) ) { $customdir = '/images'; }