Diretório de upload diferente baseado no tipo de postagem em um tema

4

Eu tenho muitos arquivos de imagem e tamanhos de imagem enviados. Por isso, seria melhor organizar os arquivos de mídia em pastas com base no tipo de postagem. Acabei de ler este tutorial, mas como eu posso ver funciona com plugins. Como mudar isso para usar em um tema? Obrigado.

function custom_upload_directory( $args ) {
 
    $id = $_REQUEST['post_id'];
    $parent = get_post( $id )->post_parent;
 
    // Check the post-type of the current post
    if( "post-type" == get_post_type( $id ) || "post-type" == get_post_type( $parent ) ) {
        $args['path'] = plugin_dir_path(__FILE__) . "uploads";
        $args['url']  = plugin_dir_url(__FILE__) . "uploads";
        $args['basedir'] = plugin_dir_path(__FILE__) . "uploads";
        $args['baseurl'] = plugin_dir_url(__FILE__) . "uploads";
    }
    return $args;
}
add_filter( 'upload_dir', 'custom_upload_directory' );
    
por user9909 21.12.2012 / 18:16

2 respostas

7

Se eu entendi sua pergunta corretamente, você quer uma função dentro do seu tema que adicione diretórios para o post_type atual? como: uploads / post_type_name. se assim for, aqui está uma função para isso:

function wpse_16722_type_upload_dir( $args ) {

    // Get the current post_id
    $id = ( isset( $_REQUEST['post_id'] ) ? $_REQUEST['post_id'] : '' );

    if( $id ) {    
       // Set the new path depends on current post_type
       $newdir = '/' . get_post_type( $id );

       $args['path']    = str_replace( $args['subdir'], '', $args['path'] ); //remove default subdir
       $args['url']     = str_replace( $args['subdir'], '', $args['url'] );      
       $args['subdir']  = $newdir;
       $args['path']   .= $newdir; 
       $args['url']    .= $newdir; 
    }
    return $args;
}
add_filter( 'upload_dir', 'wpse_16722_type_upload_dir' );
    
por Pontus Abrahamsson 22.12.2012 / 19:52
-2

No WP 4.4, você precisa retornar o $args antes de terminar a função, não dentro da condição de $id .

    
por z1k0s95 09.03.2016 / 10:29