在WordPress中,如果在WP管理员帖子编辑屏幕上上传媒体文件,它将自动附加到正在编辑的当前帖子。但是,我允许我的网站作者通过前端上传图片。我创建的上传表单位于帖子页面(循环内),因此我在上传图片时可以使用帖子ID。
有没有办法自动将上传的图片附加到帖子?目前,当我访问WP管理员中的媒体部分时,到目前为止上传的所有图片都标记为“未附加的”#。
价:
https://codex.wordpress.org/Using_Image_and_File_Attachments#Attachment_to_a_Post
编辑:我应该提及我使用WordPress Liveblog:https://github.com/Automattic/liveblog - 当用户将图片网址粘贴到表单中时,会上传图片。
答案 0 :(得分:6)
您可以在上传表单提交后运行以下功能。请说明您的上传表格如下:
<form ction="your_action.php" method="post"
enctype="multipart/form-data">
<input type="file" name="attachment"/>
<input type="hidden" name="post_id" value="<?php global $post; echo $post->ID; ?>"/>
</form>
在您的上传处理部分;
<?php
$filename = $_FILES["file"]["attachment"];
$post_id = $_POST["post_id"];
$filetype = wp_check_filetype( basename( $filename ), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $filename, $post_id );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );