首页 > 解决方案 > 有没有办法通过前端文件上传来更新 Wordpress 中的自定义字段?

问题描述

我正在尝试使用从前端表单上传的文件来更新自定义 WordPress 字段。

例子:

<form action="submit"><input type="file" name="file_upload"><button type="submit">Submit</button></form>

现在我正在寻找更新 WordPress 中名为“file_upload”的自定义字段(文件上传)的 php 代码,该字段具有特定 ID 的帖子。我使用的插件是“高级自定义字段”。

编辑:
我通过 PhP 中的 $_FILES 请求获取文件:

$file_upload = $_FILES['file_upload'];

然后我尝试通过这种方法处理上传:

$file_upload_id = media_handle_upload( $file_upload, 0 );

这是正确的方法吗?

标签: phpwordpressformsfile-uploadadvanced-custom-fields

解决方案


Wordpress 有一个内置的上传功能,它返回您需要更新字段的附件 id,建议使用 nonce 字段来验证它是正确的位置。

    if ( 
        isset( $_POST['my_image_upload_nonce'], $_POST['post_id'] ) 
        && wp_verify_nonce( $_POST['my_image_upload_nonce'], 'my_image_upload' )
    ) {
        require_once( ABSPATH . 'wp-admin/includes/image.php' );
        require_once( ABSPATH . 'wp-admin/includes/file.php' );
        require_once( ABSPATH . 'wp-admin/includes/media.php' );
        $attachment_id = media_handle_upload( 'my_image_upload', $_POST['post_id'] );
        if ( is_wp_error( $attachment_id ) ) {
            update_field('image', $attachment_id, $_POST['post_id']);
        } else {
       // The image was uploaded successfully!
    }

    } else {

    // The security check failed, maybe show the user an error.
    }

推荐阅读