2012-03-13 115 views
4

我有一个自定义主题,我创建了一个上传按钮,当我按下这些按钮时,我会调用Wordpress上传器。事情是这样的:如何以编程方式更改Wordpress上传文件夹?

jQuery('#ahng_blog_upload_button').click(function() { 
    formfield = jQuery('#ahng_blog_upload_image').attr('name'); 
    tb_show('Upload or Select Photo and Click on "Insert into Post"', 'media-upload.php?type=audio&TB_iframe=true'); 
    return false; 
}); 

眼下,我functions.php文件夹中,我给自己定,我想要上传的文件(http://website.com/wp-content/uploads),但我想改变这取决于按下按钮上传位置。

例如,当按下“上传图片”按钮,上载文件夹更改为imageshttp://website.com/wp-content/uploads/images),并且当按下“上传MP3”按钮时,上载文件夹更改为audiohttp://website.com/wp-content/uploads/audio)。

我知道我可以将所有内容上传到我之前提到的默认文件夹中,但如果我需要使用ftp查找特定文件,则稍后更容易进行排序。

有没有办法做到这一点使用jQuery和Ajax和调用一个PHP文件,并不真的返回任何东西,但在WordPress的上传目录更改?或者其他方式?

+0

我有同样的问题。任何人? – 2012-04-29 07:21:48

回答

2

我使用的方法基于纯粹的WordPress挂钩,不涉及jQuery或Ajax。

我真的不知道你所指的是什么按钮......自从唯一的按钮是“上传媒体”以来,已经有一段时间了。除非你使用定制的。

WordPress StackExchange answer有其他过滤的可能性。 Bellow是通过媒体类型对代码进行调整以过滤上传的代码。

add_filter('wp_handle_upload_prefilter', 'wpse_25894_handle_upload_prefilter'); 
add_filter('wp_handle_upload', 'wpse_25894_handle_upload'); 

function wpse_25894_handle_upload_prefilter($file) 
{ 
    add_filter('upload_dir', 'wpse_25894_custom_upload_dir'); 
    return $file; 
} 

function wpse_25894_handle_upload($fileinfo) 
{ 
    remove_filter('upload_dir', 'wpse_25894_custom_upload_dir'); 
    return $fileinfo; 
} 

function wpse_25894_custom_upload_dir($path) 
{ 
    // Determines if uploading from inside a post/page/cpt 
    // If not, default Upload folder is used 
    $use_default_dir = (
      isset($_REQUEST['post_id']) 
      && $_REQUEST['post_id'] == 0 
      ) 
      ? true : false; 

    if(!empty($path['error']) || $use_default_dir) 
     return $path; //error or uploading not from a post/page/cpt 

    // Save uploads in FILETYPE based folders. When using this method, 
    // you may want to change the check for $use_default_dir 
    $extension = substr(strrchr($_POST['name'], '.'), 1); 

    switch($extension) 
    { 
     case 'jpg': 
     case 'png': 
     case 'gif': 
      $customdir = '/images'; 
      break; 

     case 'mp4': 
     case 'm4v': 
      $customdir = '/videos'; 
      break; 

     case 'txt': 
     case 'doc': 
     case 'pdf': 
      $customdir = '/documents'; 
      break; 

     default: 
      $customdir = '/others'; 
      break; 
    } 

    //remove default subdir (year/month) 
    $path['path'] = str_replace($path['subdir'], '', $path['path']); 
    $path['url']  = str_replace($path['subdir'], '', $path['url']); 

    $path['subdir'] = $customdir; 
    $path['path'] .= $customdir; 
    $path['url'] .= $customdir; 

    return $path; 
} 
相关问题