0

我正在为上传 pdf 文件的 wordpress 主题创建自定义上传字段。代码是:

function custom_news_meta_box($post)
{
    $file_name = get_post_meta($post->ID, 'file_name', true);
    $pdf = get_post_meta($post->ID, 'pdf', true);

    wp_nonce_field('news_meta_nonce', 'news_nonce');
    ?>
    <p>
        <label for="file_name">File Name: </label>
        <input type="text" name="file_name" id="file_name" value="<?php echo $file_name; ?>"/>
    </p>
    <p>
        <label for="pdf">PDF: </label>
        <input type="file" name="pdf" id="pdf" value="<?php echo $pdf; ?>"/>
    </p>
<?php
}

function save_news($post_id)
{
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;

    if (!isset($_POST['news_nonce']) || !wp_verify_nonce($_POST['news_nonce'], 'news_meta_nonce')) return;

    if (isset($_POST['file_name']) && !empty($_POST['file_name'])) {
        update_post_meta($post_id, 'file_name', esc_html($_POST['file_name']));

        if ($_FILES['pdf']['name'] && !$_FILES['pdf']['error']) {
            if (strtolower($_FILES['extension']) != 'pdf') {
                $_SESSION['pdf_error'] = true;
                return;
            }

            if (!file_exists(THEMEROOT . '/downloads/' . $_FILES['pdf']['name'])) {
                move_uploaded_file($_FILES['pdf']['tmp_name'], $_POST['file_name']);
            }

            update_post_meta($post_id, 'pdf', esc_html($_POST['file_name']));
        }
    }
}

问题是当我更新页面时 $_FILES 是一个空数组。我尝试将 multipart/form-data 标记添加到表单

add_action('post_edit_form_tag', 'add_post_enctype');

function add_post_enctype() {
    echo ' enctype="multipart/form-data"';
}

但是当我更新页面时它重定向到 post.php。我的问题有什么解决方案吗?

4

0 回答 0