WordPress 帖子元上传框中的 $_FILES 始终为空

Jer*_*all 2 php wordpress plugins

我感觉自己很傻。我正在构建我的第一个 WordPress 插件。第一个目标是向帖子添加一个自定义元框,以允许音频上传。我创建了元框,当我使用文本输入时,代码工作正常。当我尝试将输入转换为文件上传时,我遇到了问题。

  1. 该文件永远不会上传(我正在使用wp_upload_bits()
  2. $_FILES 似乎总是空的。在下面的示例中,当我调用类似的东西时$_FILES[ 'audio_box' ],我总是得到一个无效或不可用的密钥。

这是我正在使用的代码的简化版本。我有随机数和真实版本中的所有设置!

<?php

add_action( 'load-post.php', 'file_upload_setup' );
add_action( 'load-post-new.php', 'file_upload_setup' );

function file_upload_setup() {
    add_action( 'add_meta_boxes', 'file_upload_box' );
    add_action( 'save_post', 'upload_save_post_class_meta' );
}

function file_upload_box() {
    add_meta_box(
        'audio_box',    // Unique ID
        esc_html__( 'Title' ),
        'audio_box',   // Callback function
        'post',         // Admin page (or post type)
        'side',         // Context
        'default'         // Priority
    );
}

function upload_save_post_class_meta( $post_id ) {
    if ( !empty( $_FILES[ 'audio_box' ] ) ) {
        $upload = wp_upload_bits( $_FILES[ 'audio_box' ][ 'name' ],
            null,
            file_get_contents( $_FILES[ 'audio_box' ][ 'tmp_name' ] )
        ); 
    }
}

function file_upload_box( $post ) { ?>
    <p>
        <label for="file_upload_box"><?php _e( "Upload an audio file to accompany your post." ); ?></label>
        <br />
        <input
            class="widefat"
            type="file"
            name="audio_box" 
            id="audio_box" 
            value="<?php 
                    echo esc_attr(
                        get_post_meta( $post->ID, 'audio_box', true ) 
                    );
                ?>" 
            size="30" 
        />
    </p>
<?php }

?>
Run Code Online (Sandbox Code Playgroud)

我需要在这里做些什么特殊的事情才能将文件上传到保存时的媒体库吗?

谢谢大家!长期倾听者,第一次来电:)

Mus*_*usk 5

$_FILES您缺少一些用于填充的代码行。

add_action( 'post_edit_form_tag', 'update_edit_form' );
function update_edit_form() {
    echo ' enctype="multipart/form-data"';
}
Run Code Online (Sandbox Code Playgroud)

在当地为我工作。

https://tommcfarlin.com/upload-files-in-wordpress/

https://code.tutsplus.com/articles/attaching-files-to-your-posts-using-wordpress-custom-meta-boxes-part-1--wp-22291