Como salvar arquivos de mídia sob pasta personalizada sem alterar wp-config.php ou alterar as configurações de mídia

Eu quero fazer upload de imagens em uma pasta única. Em seguida, recuperar o caminho desta imagem salva no servidor como

http://example.com/wp-content/uploads/myimages/image1.jpg 

Agora eu quero salvar este URL em uma postagem com o campo personalizado como url.

Estarei substituindo as postagens regularmente, bem como a substituição de imagens correspondentes, por isso não quero manter as imagens relacionadas a postagens anteriores (postagens excluídas) no meu servidor (caso contrário aumentaria a memory no servidor). Quero excluir todas as imagens da pasta myimages . Não quero mudar o caminho padrão para uploads. Aqui está o meu código para criar a postagem:

 $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); 

Por favor, diga-me como mudar esse caminho de upload sem fazer alterações em wp-config.php ou configurações de mídia.

Solutions Collecting From Web of "Como salvar arquivos de mídia sob pasta personalizada sem alterar wp-config.php ou alterar as configurações de mídia"

Aqui é uma function simples para criar seu próprio subdiretor para cada upload.

 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' ); 

Do meu código acima, alterei minha pasta de imagens como uploads_img , você pode mudar a sua também.

Se você quiser mais informações, escrevi um tutorial para alterar os diretórios de upload para cada upload personalizado, veja o meu blog :

Aviso: Não testei minha idéia ou código fornecido abaixo.

* media_sideload_image * chama * function wp_handle_upload * que, surpreendentemente, lida com o carregamento de arquivos.

O diretório de upload é configurado através da function * wp_upload_dir *. Esta function possui um filtro que pode ser usado para modificar sua saída (veja http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/functions.php#L1607 ):

 $uploads = apply_filters( 'upload_dir', array( 'path' => $dir, 'url' => $url, 'subdir' => $subdir, 'basedir' => $basedir, 'baseurl' => $baseurl, 'error' => false, ) ); 

Então, ligue esse filtro através de:

 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; } } 

O pressuposto do código, que você tem um campo oculto em seu código, o qual é um var cobrado com valor específico novamente, você verifica seu filtro. Se essa $ _POST var não estiver presente ou tiver um valor diferente, você retornará a matriz original – assim você não irá quebrar os uploads padrão da imagem.

E, claro, você deve criar todas as variables ​​usadas no filtro, por exemplo. $ dir, $ url etc. Verifique http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/functions.php#L1525 para obter e idear como o WP faz isso.