Загрузки — Как Сохранить Медиафайлы В Пользовательской Папке Без Изменения Wp-Config.php Или Изменения Настроек Мультимедиа.

  • Автор темы Nick383
  • Обновлено
  • 22, Oct 2024
  • #1

Я хочу загрузить изображения в уникальную папку. Затем получите путь к этому изображению, сохраненному на сервере, например

 
 wp-config.php 

Теперь я хочу сохранить этот URL-адрес в сообщении, имеющем настраиваемое поле в качестве URL-адреса.

Я буду регулярно перезаписывать сообщения, а также заменять соответствующие изображения, поэтому я не хочу хранить изображения, связанные с предыдущими сообщениями (удаленные сообщения), на своем сервере (иначе это приведет к увеличению памяти на сервере). Я хочу удалить все изображения из $new_post = array( 'post_title' => $phototitle, 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'post', 'post_category' => array(328) ); $postid=wp_insert_post($new_post); update_field('field_521c73f75a652',$photoid,$postid); update_field('field_521c74a65a653',$phototitle,$postid); update_field('field_521c74b25a654',$photourl,$postid); update_field('field_521c74be5a655',$details,$postid); update_field('field_521c77e72f9a6',$countinarr,$postid); require_once(ABSPATH . 'wp-admin/includes/media.php'); require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/image.php'); $image = media_sideload_image($photourl, $postid, $phototitle); $path = (string)$image; $arr = (explode("'",$path)); $url = $arr[1]; update_field('field_521c758095f55',$url,$postid); folder. I don't want to change the default path for uploads. Here's my code for creating the post:

myimages

Подскажите, пожалуйста, как изменить этот путь загрузки, не внося никаких изменений в http://example.com/wp-content/uploads/myimages/image1.jpg or media settings.

#настраиваемое поле #загрузки #медиа-библиотека

Nick383


Рег
18 Jul, 2007

Тем
70

Постов
209

Баллов
619
  • 25, Oct 2024
  • #2

Вот простая функция для создания собственного подкаталога для каждой загрузки.

 
 
 add_filter( 'upload_dir', 'my_upload_dir_function' );

function my_upload_dir_function( $uploads ){

if( isset( $_POST['my_check_post_var'] ) && $_POST['my_check_post_var'] == 'my_check_var_value' ){

return array(

'path'    => $dir, //have to be set

'url'     => $url, //have to be set

'subdir'  => $subdir, //have to be set

'basedir' => $basedir, //have to be set

'baseurl' => $baseurl, //have to be set

'error'   => false,

);

}else{

return $uploads;

}
}
 

Из моего приведенного выше кода я изменил папку с изображениями как $uploads = apply_filters( 'upload_dir', array( 'path' => $dir, 'url' => $url, 'subdir' => $subdir, 'basedir' => $basedir, 'baseurl' => $baseurl, 'error' => false, ) ); , you can change yours likewise.

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

 

Анна Сальваторе


Рег
07 Feb, 2011

Тем
73

Постов
203

Баллов
568
  • 25, Oct 2024
  • #3

Уведомление: Я не проверял свою идею или код, представленный ниже.

*media_sideload_image* вызывает функцию *wp_handle_upload*, которая, как ни странно, обрабатывает загрузку файлов.

Каталог загрузки устанавливается с помощью функции *wp_upload_dir*. Эта функция имеет фильтр, который можно использовать для изменения ее вывода (см. http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/functions.php#L1607):

uploads_img

Итак, подключаемся к этому фильтру через:

function kv_custom_image_dir( $pathdata ) { $subdir = '/uploads_img'.$pathdata['subdir']; $pathdata['path'] = str_replace($pathdata['subdir'], $subdir, $pathdata['path']); $pathdata['url'] = str_replace($pathdata['subdir'], $subdir, $pathdata['url']); $pathdata['subdir'] = str_replace($pathdata['subdir'], $subdir, $pathdata['subdir']); return $pathdata; } add_filter( 'upload_dir', 'kv_custom_image_dir' );

Код предполагает, что у вас есть скрытое поле в вашем коде, которое устанавливает проверочную переменную с определенным значением, которую вы проверяете в своем фильтре. Если эта переменная $_POST отсутствует или имеет другое значение, вы возвращаете исходный массив - таким образом, вы не нарушите стандартную загрузку изображений.

И, конечно же, вам необходимо создать все переменные, используемые в фильтре, например. $dir, $url и т. д. Проверьте http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/functions.php#L1525 чтобы понять, как WP это делает.

 

Alex2gk


Рег
21 Apr, 2007

Тем
73

Постов
202

Баллов
607
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно