首页 文章

如何在WordPress中以编程方式将媒体文件附加到帖子?

提问于
浏览
3

在WordPress中,如果在WP管理员帖子编辑屏幕中上传媒体文件,它将自动附加到正在编辑的当前帖子 . 但是,我允许我的网站作者通过前端上传图片 . 我创建的上传表单位于帖子页面(循环内),因此我在上传图片时可以使用帖子的ID .

有没有办法自动将上传的图像附加到帖子?目前,当我访问WP管理员中的媒体部分时,到目前为止上传的所有图像都标记为'unattached' .

参考:

https://codex.wordpress.org/Using_Image_and_File_Attachments#Attachment_to_a_Post

Edit: 我应该提到我正在使用WordPress Liveblog:https://github.com/Automattic/liveblog - 当用户将图像URL粘贴到表单中时会上传图像 .

1 回答

  • 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 );
    

相关问题