gpt4 book ai didi

jquery - 如何以编程方式更改 WordPress 上传文件夹?

转载 作者:行者123 更新时间:2023-12-01 00:15:35 25 4
gpt4 key购买 nike

我有一个自定义主题,我创建了一个上传按钮,按下这些按钮时我会调用 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 ),但我想根据按下的按钮更改上传位置。

例如,当按下“上传图片”按钮时,将上传文件夹更改为images (http:///website.com/wp-content/uploads/images),当按下“上传 MP3”按钮时,将上传文件夹更改为音频 (http://website.com/wp-content/uploads/audio)。

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

有没有办法使用 jquery 和 ajax 并调用一个 php 文件来做到这一点,该文件实际上不会返回任何内容,但会更改 WordPress 中的上传目录?或者有其他方式吗?

最佳答案

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

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

这个WordPress StackExchange answer有其他过滤可能性。下面是调整后的代码,用于按媒体类型过滤上传。

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;
}

关于jquery - 如何以编程方式更改 WordPress 上传文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com