我有一个自定义主题,我创建了一个上传按钮,当按下这些按钮时,我将其称为Wordpress Uploader。像这样的东西:
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
)的位置,但是我想根据按下哪个按钮来更改上传位置。
例如,按下'Upload Picture'按钮时,将上传文件夹更改为images
(http://website.com/wp-content/uploads/images
),而当'Upload MP3'按钮为按下,将上传文件夹更改为audio
(http://website.com/wp-content/uploads/audio
)。
我知道我可以将所有内容上传到我之前提到的默认文件夹,但是如果以后我需要使用ftp查找特定文件,则更容易进行排序。
有没有一种方法可以使用jquery和ajax并调用一个php文件,该文件实际上不会返回任何内容,但是会更改wordpress中的Upload Dir?还是其他方式?
我使用的方法基于纯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;
}
从Wordpress 5开始,它似乎不再起作用。有什么想法吗?