@easycode
не боюсь задавать глупые вопросы ))

Как изменить директорию куда сохраняет файлы функция media_handle_sideload в WordPress?

Имеется такой код в котором создается пост с пользовательским типом: myphoto, из сети качается изображение и сохраняется в качестве миниатюры для этого поста:

// данные нового поста типа: myphoto
$_post_data = array(
	'post_title' => $title,
	'post_status' => 'publish',
	'post_author' => 1,
	'post_type' => 'myphoto',
);
// создаем пост
$post_id = wp_insert_post( $_post_data );

// скачиваем файл 
$tmp_file = download_url( $url );

// загружаем файл в медиатеку WordPress
$att_id = media_handle_sideload( array(
	'name' => $title,
	'tmp_name' => $tmp_file,
), $post_id, $title );

// устанавливаем миниатюру для записи
set_post_thumbnail($post_id, $att_id);


Как поменять папку куда сохраняется через media_handle_sideload файл изображения? Например, я хочу чтобы папка имела название в виде ID поста ($post_id в моём примере)?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@easycode Автор вопроса
не боюсь задавать глупые вопросы ))
Google-поиск и эксперименты привели к такому "костыльному" решению:

// данные нового поста типа: myphoto
$_post_data = array(
  'post_title' => $title,
  'post_status' => 'publish',
  'post_author' => 1,
  'post_type' => 'myphoto',
);
// создаем пост
$post_id = wp_insert_post( $_post_data );

// скачиваем файл 
$tmp_file = download_url( $url );

$_REQUEST['post_id'] = $post_id;

// загружаем файл в медиатеку WordPress
$att_id = media_handle_sideload( array(
  'name' => $title,
  'tmp_name' => $tmp_file,
), $post_id, $title );

unset($_REQUEST['post_id']);

// устанавливаем миниатюру для записи
set_post_thumbnail($post_id, $att_id);


add_filter( 'upload_dir', 'filter_upload_dir' );
function filter_upload_dir($args)
{
	if ( get_post_type( $_REQUEST['post_id'] ) == "yd_photo" ) {
	    $mydir         = "/{$_REQUEST['post_id']}";
	    $args['path'] = $args['basedir'] . $mydir;
	    $args['url']  = $args['baseurl'] . $mydir;
	}
	return $args;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы