Php WordPress前端上传问题

Php WordPress前端上传问题,php,wordpress,Php,Wordpress,在前端,我创建了一个表单,它使用上传用户文件()从前端主题上传文件,每个图像都很好地存储在WordPress媒体库中(看起来是这样的) 所以,当我上传一个名为test.jpg的文件时,它的相对缩略图会被创建,并在媒体库中可见。 test-150x150.jpg test-300x225.jpg test-1024x768.jpg 我遇到的问题是,当我从媒体库中删除此图像时。只有创建的缩略图被删除,test.jpg在上传文件夹中保持不变。如果我直接从媒体库上传此文件,然后将其删除,则所有文件都将被

在前端,我创建了一个表单,它使用
上传用户文件()
从前端主题上传文件,每个图像都很好地存储在WordPress媒体库中(看起来是这样的)

所以,当我上传一个名为
test.jpg
的文件时,它的相对缩略图会被创建,并在媒体库中可见。 test-150x150.jpg test-300x225.jpg test-1024x768.jpg

我遇到的问题是,当我从媒体库中删除此图像时。只有创建的缩略图被删除,
test.jpg
在上传文件夹中保持不变。如果我直接从媒体库上传此文件,然后将其删除,则所有文件都将被删除,包括
test.jpg

下面是将值存储在数据库中并将文件上载到medialibrary的代码。还有其他的WordPress功能可以使用吗?我猜
upload\u user\u file()
在数据库中没有正确存储图像数据

global $wpdb;
global $post;

//$table = 'wp_verk1_project'; //$post_slug=$post->post_name;
$table = $wpdb->prefix . "project_name_" . $post_slug=$post->post_name;
$data = array(
    'contributorname' => $_POST['yourname'],
    'email' => $_POST['email'],
    'telephone' => $_POST['telephone'],
    'description' => $_POST['description'],
    'date' => date('Y-m-d'),
    'time' => date('H:i:s'),
    'upload' => upload_user_file($_FILES['file']),
    'upload2' => upload_user_file($_FILES['file2']),
    'upload3' => upload_user_file($_FILES['file3']),
    'upload4' => upload_user_file($_FILES['file4']),
    'upload5' => upload_user_file($_FILES['file5']),
    'rate' => '0'
);
$format = array(
    '%s',
    '%s'
);

$success = $wpdb->insert($table, $data, $format);

if ($success) {
    header("Location: " . get_bloginfo('url') . "/thank-you/");
    exit();
}
编辑用户文件():

函数上载用户文件($file=array()){
require_once(ABSPATH.'wp admin/includes/admin.php');
$file\u return=wp\u handle\u upload($file,array('test\u form'=>false));
if(isset($file_return['error'])| | isset($file_return['upload_error_handler'])){
返回false;
}否则{
$filename=$file_return['file'];
$attachment=array(
'post_mime_type'=>$file_return['type'],
'post\u title'=>preg\u replace('/\.[^.]+$/','',basename($filename)),
'发布内容'=>'',
“post_status”=>“inherit”,
'guid'=>$file\u返回['url']
);
$attachment_id=wp_insert_attachment($attachment,$file_return['url']);
require_once(ABSPATH.'wp admin/includes/image.php');
$attachment\u data=wp\u generate\u attachment\u元数据($attachment\u id,$filename);
wp_更新_附件_元数据($attachment_id,$attachment_data);
如果(0
问候
约翰

我设法解决了自己的问题

我翻查了WordPress的核心文件

我放置了以下行:

$attachment_id = wp_insert_attachment( $attachment, $file_return['url'] );
为此:

$attachment_id = wp_insert_attachment( $attachment, $filename );
在wp_posteta中,上传的meta_值被设置为完整的url(),而它应该这样存储:2014/12/file.jpg

现在所有文件都被删除了

$attachment_id = wp_insert_attachment( $attachment, $filename );