web-dev-qa-db-fra.com

Répertoire de téléchargement différent en fonction du type de publication dans un thème

J'ai beaucoup de fichiers image téléchargés et de tailles d'image. Il serait donc préférable d’organiser les fichiers multimédia dans des dossiers en fonction du type de publication. Je viens de lire ce tutoriel, mais comme je peux le voir, cela fonctionne avec des plugins. Comment changer cela pour l'utiliser dans un thème? Merci.

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

Si je comprends bien votre question, vous voulez une fonction dans votre thème qui ajoute des répertoires pour le post_type actuel? comme: uploads/post_type_name. si oui, voici une fonction pour cela:

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' );
9
Pontus Abrahamsson