我正在为上传 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。我的问题有什么解决方案吗?