我有一个自定义页面模板,其中包含使用PHP和PHP功能的自定义填充表单,用户可以输入他们的基本信息并上传文件。该文件将直接上传到文件系统中。
现在,我想重命名文件取决于用户的姓和名,就像这个lastname_firstname。而且,我想将上传文件保存在wp内容之外(让我们说在我的桌面或wp-content之外的文件夹中)并限制用户可以上传的文件类型。如何实现这些?
这是PHP代码段如何在文件系统中上传文件
function upload_user_file($file = array()){
require_once(ABSPATH . 'wp-admin/includes/admin.php');
$file_return = wp_handle_upload($file, array('test_form' => false));
if(isset($file_return['error']) || isset($file_return['upload_error_handler'])){
return false;
} else {
$filename = $file_return['file'];
$attachment = array(
'post_mime_type' => $file_return['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit',
'guid' => $file_return['url']
);
$attachment_id = wp_insert_attachment($attachment, $file_return['url']);
require_once(ABSPATH . 'wp-admin/includes/file.php');
$attachment_data = wp_generate_attachment_metadata($attachment_id, $filename);
wp_update_attachment_metadata($attachment_id, $attachment_data);
if(0 < intval($attachment_id)){
return $attachment_id;
}
}
return false;
}
答案 0 :(得分:0)
使用自定义代码解决了您的问题。请用这个脚本替换你的功能。
首先使用&#34; static&#34;创建文件夹。 wp_content文件夹附近的文件夹名称。 然后将此代码放在function.php文件中。
`
function upload_user_file($file = array(), $first_name='',$last_name=''){
$root= dirname(dirname(dirname(dirname(realpath(__FILE__)))));
$path =$root.'/static/';
if(!empty($_FILES["file"]["name"])){
$file_name = $last_name.'_'.$first_name.$_FILES["file"]["name"];
$tmp_file = $_FILES["file"]["tmp_name"];
move_uploaded_file($tmp_file,"$path".$file_name);
}
}
`
答案 1 :(得分:-1)
打开你的WordPress安装根目录下的wp-config.php文件,并添加以下代码
define('UPLOADS', 'wp-content/myimages');
确保在行
之前添加此代码require_once(ABSPATH.’wp-settings.php’);
如果该目录尚不存在,只要wp-content文件夹可写,WordPress就会自动创建该目录。否则,您可以通过FTP,cPanel等自己使用文件夹
您还可以更改上传的整理方式。如果您打开uploads文件夹,您会注意到默认情况下,文件按年份排序。您可以更改文件组织,以便将所有媒体文件转储到一个文件夹中。转到设置&gt;媒体并取消选中“将我上传的内容整理到基于月份和年份的文件夹中。”
它不仅可以简化您的网址,还可以让您更轻松地在一个地方查看所有文件,而不必对月份和年份目录进行排序。