我已经为此挣扎了将近两天,但都没有结果。我有一个自定义的帖子类型PRODUCTS
其中有一组元盒,用于在wp-admin
. 我已经在管理中创建了元数据库。以下是我的元数据库的代码:
//PDF upload Meta Boxes
$meta_box_pdf_uploads = array(
\'id\' => \'products-pdf-meta-boxes\',
\'title\' => "PDFs",
\'page\' => \'product\', //attach to products custom post
\'context\' => \'normal\',
\'priority\' => \'default\',
\'fields\' => array(
array(
\'name\' => $prefix . \'pdf1\',
\'desc\' => \'Product PDF\',
\'id\' => $prefix . \'pdf1\',
\'type\' => \'text\'
),
array(
\'name\' => $prefix . \'pdf2\',
\'desc\' => \'Product PDF\',
\'id\' => $prefix . \'pdf2\',
\'type\' => \'text\'
)
)
);
目前只需上传两份pdf。以下是在“管理”菜单中显示我的元数据库的代码:
function products_pdf_uploads_show_meta() {
global $meta_box_pdf_uploads, $post, $prefix;
echo \'<table class="form-table">\';
echo \'<p class="description">Upload your PDFs here</p>\';
foreach ($meta_box_pdf_uploads[\'fields\'] as $field) {
// get current post meta data
$meta = get_post_meta($post->ID, $field[\'id\'], true);
echo \'<tr>\',
\'<td>\',
\'<input type="file" style="width: 700px;" name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'" />\',
\'</td>\',
\'</tr>\';
}
echo \'</table>\';
}
在我尝试检查file upload字段是否有值之前,所有这些都有效。以下是我现在正在使用的保存meta的代码(有大量调试代码,所以您知道):
//Upload PDF files
foreach ($meta_box_pdf_uploads[\'fields\'] as $pdf_field) {
//Make sure field isn\'t emtpy
if(isset($_FILES[$pdf_field[\'name\']]) {
//var_dump($_FILES);
print_r ($_FILES[$pdf_field[\'name\']]); //debugging
$pdf_type = $_FILES[$pdf_field[\'name\'][\'tmp_name\']]; //debugging, can\'t get this to return any value
wp_die(\'Passed! \'. $pdf_type); //debugging
//Setup File type allowed
//Get the file type
} else {
//var_dump($_FILES);
print_r ($_FILES[$pdf_field[\'name\']]);
wp_die(\'Nothing was passed: \' . $pdf_field[\'name\']); //debugging
}
}
现在,即使我没有将文件添加到上载字段,我的第一个条件仍然满足:
if(isset($_FILES[$pdf_field[\'name\']]) {
我知道这是因为它返回一个$pdf\\u字段数组。我还尝试使用检查错误是否为0
$_FILES[$pdf_field[\'name\'][\'error\']
但我无法返回任何$\\u文件数组值。
当指定要上载的字段并执行print_r ($_FILES[$pdf_field[\'name\']])
它返回:
Array ( [name] => 1testpdf.pdf [type] => application/pdf [tmp_name] => /tmp/phpF7HQnJ [error] => 0 [size] => 8278 )
这是正确的,但当我不指定字段时也会这样做,只有所有数组值都是空的,只有错误等于4(未指定文件)。
我一直在为这件事发愁。最好的方法是什么?我想如果它是一个单一的代谢箱,我可以这样称呼它$FILE[\'name_of_file\'][\'error\']
这会有用的。为什么要使用foreach
搞砸了?
非常感谢。