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

4

J'ai beaucoup de fichiers image et de tailles d'image téléchargés. 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' );
    
posée user9909 21.12.2012 - 18:16

2 réponses

7

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' );
    
réponse donnée Pontus Abrahamsson 22.12.2012 - 19:52
-2

Dans WP 4.4, vous devez renvoyer $args juste avant de terminer la fonction, mais pas dans la condition $id .

    
réponse donnée z1k0s95 09.03.2016 - 10:29

Lire d'autres questions sur les étiquettes