ulfben icon

Custom Upload Dir

ulfben | PRO | 03/23/19 10:18:15 PM UTC | 0 ⭐ | 1172 👁️ | Never ⏰ | []
PHP |

3.78 KB

|

None

|

0 👍

/

0 👎

//at init:
add_filter('wp_handle_upload_prefilter', 'cud_pre_upload'); 
 
// Called once for each uploaded file.
function cud_pre_upload($file){ 
    [...]
    add_filter('upload_dir', 'cud_custom_upload_dir');
    return $file;
}
 
function cud_custom_upload_dir($path){      
    if(!empty($path['error'])) { return $path; } //error; do nothing.   
    $customdir = cud_generate_path();
    $path['path']    = str_replace($path['subdir'], '', $path['path']); //remove default subdir (year/month)
    $path['url']     = str_replace($path['subdir'], '', $path['url']);      
    $path['subdir']  = $customdir;
    $path['path']   .= $customdir; 
    $path['url']    .= $customdir;  
    return $path;
}
 
function cud_generate_path(){   
    global $post, $post_id, $current_user, $cud_file_ext, $cud_file_type, $cud_rpc_id;  
    $post_id = (!empty($post_id) ? $post_id : (!empty($_REQUEST['post_id']) ? $_REQUEST['post_id'] : (!empty($cud_rpc_id) ? $cud_rpc_id : '')));
    $my_post;
    if(empty($post) || (!empty($post) && is_numeric($post_id) && $post_id != $post->ID)){ 
        $my_post = get_post($post_id);
    }   
    $customdir = = get_option('custom_upload_dir_template');
    
    //defaults
    $user_id = $post_type = $post_name = $author = '';
    $time = (!empty($_SERVER['REQUEST_TIME'])) ? $_SERVER['REQUEST_TIME'] : (time() + (get_option('gmt_offset')*3600)); 
    $user_id = (is_user_logged_in() && !empty($current_user)) ? $current_user->ID : '';     
    if(empty($user_id)){    
        $current_user = wp_get_current_user();
        if($current_user instanceof WP_User){
            $user_id = $current_user->ID;
        }
    }
    if(!empty($my_post)){       
        $post_id = $my_post->ID;
        $time = ($my_post->post_date == '0000-00-00 00:00:00') ? $time : strtotime($my_post->post_date);    
        $post_type = $my_post->post_type;
        $author = $my_post->post_author; 
        $post_name = (!empty($my_post->post_name)) ? $my_post->post_name : (!empty($my_post->post_title) ? sanitize_title($my_post->post_title) : $post_id);    
    }else{      
        $post_id = '';
    }   
    
    $date = explode(" ", date('Y m d H i s', $time));           
    $tags = array('%post_id%','%postname%','%post_type%','%year%','%monthnum%','%month%', '%day%','%hour%','%minute%','%second%', '%file_ext%', '%file_type%');
    $replace = array($post_id, $post_name, $post_type, $date[0], $date[1], $date[1], $date[2], $date[3], $date[4], $date[5], $cud_file_ext, $cud_file_type);
    
    $customdir = str_replace($tags, $replace, $customdir); //do all cheap replacements in one go.
    $customdir = str_replace('%permalink%',     cud_get_permalink($post_id),$customdir);
    $customdir = str_replace('%author%',        cud_get_user_name($author), $customdir);
    $customdir = str_replace('%author_role%',   cud_get_user_role($author), $customdir);
    $customdir = str_replace('%current_user%',  cud_get_user_name($user_id),$customdir);
    $customdir = str_replace('%parent_name%',   cud_get_parent_slug($my_post),  $customdir);    
    $customdir = str_replace('%post_category%', cud_get_category_name($post_id),    $customdir);/*DEPRECATED SINCE 3.0.3*/
    $customdir = str_replace('%post_categories%',cud_get_categories_name($post_id), $customdir);/*DEPRECATED SINCE 3.0.3*/
                
    //Now, let's deal with taxonomies (category, tags, custom)  
    $matches = array();
    if(preg_match_all('/%(.*?)%/s', $customdir, $matches) == true){
        for($i = 0; $i < count($matches[0]); $i++){         
            if(taxonomy_exists($matches[1][$i])){
                $customdir = str_replace($matches[0][$i], cud_get_taxonomies($post_id, $matches[1][$i]), $customdir);
            }else{
                $customdir = str_replace($matches[0][$i], '', $customdir);
            }
        }
    }   
    $customdir = cud_leadingslashit($customdir); //for good measure.
    $customdir = untrailingslashit($customdir); 
    while(strpos($customdir, '//') !== false){
        $customdir = str_replace('//', '/', $customdir); //avoid duplicate slashes.
    }   
    return apply_filters('cud_generate_path', $customdir, $post_id);
}

Comments

  • Gyqizv icon
    04/02/26 06:22:52 PM UTC
    text |

    0 B

    |

    0 👍

    /

    0 👎

    Best t33n active cpx link daily updates!
     Copy and paste the link in a new browser tab and then hit enter!
     https://crazyporn.@xxx/members/157354/?asgtbndr=1&play=true&spon=adworld&zone=400
     Remove the @ 
  • Yuizcko icon
    05/18/26 01:05:22 PM UTC
    text |

    0 B

    |

    0 👍

    /

    0 👎

    Best t33n active cpx link daily updates!
     Copy and paste the link in a new browser tab and then hit enter!
     https://crazyporn.xxx/members/157354/?asgtbndr=1&play=true&spon=adworld&zone=400