我有两个前端表单来添加和编辑wordpress帖子。我添加表单工作正常,并能够完美上传附件。
问题在于编辑表单。我使用下面的代码上传文件,我能够在数据库中看到新的attachment
帖子类型记录出现在表单提交中,但实际文件没有上传和post_meta
也没有得到更新
if (!function_exists('wp_generate_attachment_metadata')) {
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if ($_FILES) {
foreach ($_FILES as $file => $array) {
if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
return "upload error : " . $_FILES[$file]['error'];
}
$attach_id = media_handle_upload($file, $post_id);
}
}
if ($attach_id > 0) {
$type = get_post_mime_type($attach_id);
if ($type = 'image/jpeg') {
update_post_meta($new_post, '_thumbnail_id', $attach_id);
} elseif ($type = 'video/mp4') {
update_post_meta($new_post, '_video_id', $attach_id);
}
//and if you want to set that image as Post then use:
}
$post_id
是附件的父帖子ID。
答案 0 :(得分:0)
终于把它弄清楚了。由于我在表单中有两个文件上传字段,我一直尝试仅在第一个字段为空的第二个字段中上传。
对于这个空字段,foreach
循环中的upload error: 4
语句返回错误消息continue
(这意味着No file uploaded
)并打破循环,因此我添加了{ {1}} ans在我的代码中更改了以下部分。
if ($_FILES) {
foreach ($_FILES as $file => $array) {
if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
$ermg = "upload error : " . $_FILES[$file]['error'];
continue;
}else{
$attach_id = media_handle_upload($file, $post_id);
}
return $ermg;
}
}