提问人:Benjamin 提问时间:11/9/2023 更新时间:11/9/2023 访问量:44
在WordPress中更改特定文件的上传路径
Changing the upload path of a specific file in WordPress
问:
我希望每次将 PDF 文件上传到我的网站时,我的文件将保存在不同的路径中,而不是默认的 WordPress 路径。
为此,我在文件中放置了以下过滤器:functions.php
function custom_upload_directory( $file ) {
// Check if the file is a PDF
if ( $file['type'] == 'application/pdf' ) {
// Set the upload directory to a custom location
$file['url'] = '/wp-content/uploads/test-for-pdf/' . $file['name'];
$file['error'] = false;
}
return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'custom_upload_directory' );
通过放置此过滤器,PDF 文件在 WordPress 中正确上传,但它保存在其默认路径中,并且没有文件上传到我想要的路径中。
答:
0赞
Paul Allsopp
11/9/2023
#1
根据我对 WP 上wp_handle_upload_prefilter页面的阅读(我不使用),您没有选择更改该过滤器中的路径,只有名称。
默认位置是在引导过程中定义的,我建议不要搞砸它。相反,请使用插件,或编写 cron 脚本来移动文件。
请参见:https://devowl.io/knowledge-base/real-physical-media-change-wp-content-uploads-folder/
评论
0赞
Benjamin
11/9/2023
我不想更改我上传的所有文件的路径。只有像 PDF 这样的特殊文件才能与所有其他文件分开上传,并且永远只能在同一路径中上传。
1赞
Moshe Gross
11/9/2023
#2
您可以尝试以下方法,尽管我还没有测试过。
function custom_upload_directory( $file ) {
// Check if the file is a PDF
if ( $file['type'] == 'application/pdf' ) {
// Set the upload directory to a custom location
add_filter( 'upload_dir', 'pdf_upload_dir' );
}
return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'custom_upload_directory' );
function pdf_upload_dir($param){
$mydir = '/test-for-pdf';
$param['path'] = $param['basedir'] . $mydir;
$param['url'] = $param['baseurl'] . $mydir;
remove_filter( 'upload_dir', 'pdf_upload_dir' );
return $param;
}
评论
1赞
Benjamin
11/9/2023
是的,它工作正常。非常感谢您抽出宝贵时间,感谢您为我编写的这篇非常好的代码。
上一个:将文件放入路径后,立即复制
评论