我有一个名为[‘
notifications’
]的自定义帖子类型, 其中[[notifications]]中的所有帖子都有一个名为[‘
attachment’
]的自定义字段。
- 我希望用户从前端将附件上传到库中
- 如果上传成功
- 获取附件的文件名
- 然后通过其ID更新自定义帖子类型[‘ notifications’ ]中的帖子
- 将帖子中的自定义字段[‘ attachment’ ]更新为文件名
【如何在WordPress中以帖子类型插入附件并更新自定义字段】这就是我到目前为止
对于前端
<
?php
if (isset($_POST['upload'])) {
if (!empty($_FILES)) {
$file = $_FILES['file'];
$attachment_id = upload_user_file($file);
}
}
?>
<
form action="" enctype="multipart/form-data" method="post">
<
input name="file" type="file">
<
/form>
内置函数
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'];
$post_ID_attachment = 33;
$attachment = array('post_mime_type' =>
$file_return['type'], 'post_title' =>
$post_ID_attachment, 'post_content' =>
'', 'post_status' =>
'inherit', 'guid' =>
$file_return['url']
);
$attachment_id = wp_insert_attachment($attachment, $file_return['url']);
require_once(ABSPATH. 'wp-admin/includes/image.php');
$attachment_data = http://www.srcmini.com/wp_generate_attachment_metadata($attachment_id, $filename);
wp_update_attachment_metadata($attachment_id, $attachment_data);
if (0 <
intval($attachment_id)) {
return $attachment_id;
}/* UPDATE ATTACHMENT BELOW*/
update_post_meta($post_ID_attachment,'_ct_text_57fc8ec4573cd', $filename);
}
return false;
}
不知道我是否做对了。上面的代码已成功插入附件, 但未更新帖子类型[‘ notifications’ ]中的自定义字段
#1在update_post_meta查询之前, 你的函数中有一个return语句。尝试以下代码:
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'];
$post_ID_attachment = 33;
$attachment = array('post_mime_type' =>
$file_return['type'], 'post_title' =>
$post_ID_attachment, 'post_content' =>
'', 'post_status' =>
'inherit', 'guid' =>
$file_return['url']
);
$attachment_id = wp_insert_attachment($attachment, $file_return['url']);
require_once(ABSPATH. 'wp-admin/includes/image.php');
$attachment_data = http://www.srcmini.com/wp_generate_attachment_metadata($attachment_id, $filename);
wp_update_attachment_metadata($attachment_id, $attachment_data);
/* UPDATE ATTACHMENT BELOW*/
update_post_meta($post_ID_attachment,'_ct_text_57fc8ec4573cd', $filename);
if (0 <
intval($attachment_id)) {
return $attachment_id;
}
}
return false;
}
另外我不确定你的代码中是否需要这些require_once-s, 因为在function.php中需要加载所有内容。
推荐阅读
- 如何在xampp中安装下载的wordpress主题
- 快速解决Kubernetes从k8s.gcr.io仓库拉取镜像失败问题
- CentOS7搭建Cacti监控平台
- Linux下安全审计audit 系统审计 记录root操作
- 第一章 计算机网络基础术语
- 智慧军营音视频平台调度系统
- Cacti监控平台之监控本机
- 如何配置一个高效漂亮爱不释手的终端()
- 让TensorFlow在Macbook M1上性能翻倍