php 如何附加媒体文件到一个职位的WordPress编程?

mbyulnm0  于 2023-02-11  发布在  PHP
关注(0)|答案(1)|浏览(127)

在WordPress中,如果一个媒体文件在WP管理员的帖子编辑屏幕中上传,它会自动附加到当前正在编辑的帖子中。但是,我允许我的网站的作者通过前端上传图片。我创建的上传表单在帖子页面上(在循环中),所以我在上传图片时可以使用帖子的ID。
有没有办法自动将上传的图片附加到帖子中?目前,当我访问WP管理中的 * Media * 部分时,所有上传的图片都被标记为"unattached"。
参考:
https://codex.wordpress.org/Using_Image_and_File_Attachments#Attachment_to_a_Post

ctehm74n

ctehm74n1#

您可以在上传表单提交后运行以下函数。假设您的上传表单如下所示:

<form action="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( $attachment_id, $filename );
wp_update_attachment_metadata( $attachment_id, $attach_data );

相关问题