У меня есть страница, где я использую редактор WP и позволяю пользователям вставлять изображения в сообщения. Я пытаюсь ограничить их способность добавлять только изображения, и я делаю это со следующим фильтром:
add_filter('wp_handle_upload_prefilter', 'yoursite_wp_handle_upload_prefilter'); function yoursite_wp_handle_upload_prefilter($file) { // This bit is for the flash uploader if ($file['type']=='application/octet-stream' && isset($file['tmp_name'])) { $file_size = getimagesize($file['tmp_name']); if (isset($file_size['error']) && $file_size['error']!=0) { $file['error'] = "Unexpected Error: {$file_size['error']}"; return $file; } else { $file['type'] = $file_size['mime']; } } list($category,$type) = explode('/',$file['type']); if('image'!=$category || !in_array($type,array('jpg','jpeg','gif','png'))) { $file['error'] = "Sorry, you can only upload a .GIF, a .JPG, or a .PNG image file."; } return $file; }
Этот код запускается, когда я пытаюсь добавить zip-файл для плагина в панели управления администратора, например, и он не позволит мне сделать это, потому что этот код запускается. Я попытался добавить строку, чтобы проверить, является ли она is_admin()
и возвращает и не выполняет этот код. Затем код выглядел так:
add_filter('wp_handle_upload_prefilter', 'yoursite_wp_handle_upload_prefilter'); function yoursite_wp_handle_upload_prefilter($file) { // This bit is for the flash uploader if( is_admin() ) return; //<--- Added this line if ($file['type']=='application/octet-stream' && isset($file['tmp_name'])) { $file_size = getimagesize($file['tmp_name']); if (isset($file_size['error']) && $file_size['error']!=0) { $file['error'] = "Unexpected Error: {$file_size['error']}"; return $file; } else { $file['type'] = $file_size['mime']; } } list($category,$type) = explode('/',$file['type']); if('image'!=$category || !in_array($type,array('jpg','jpeg','gif','png'))) { $file['error'] = "Sorry, you can only upload a .GIF, a .JPG, or a .PNG image file."; } return $file; }
Когда я обновляю это, я получаю следующий код ошибки при попытке загрузить изображение:
`File is empty. Please upload something more substantial.`
Как я могу ограничить редактор WP только изображениями на лицевой части и в разделе администратора, а не выполнять этот код? Есть ли другой фильтр?
благодаря
Пытаться,
if ( is_admin() ) return $file;
вместо. В основном вы всегда должны возвращать отфильтрованный контент, иначе вы эффективно отфильтровали $file
ничем.