Limite la carga de imágenes a una y desactive el audio, el video y otros tipos de archivos de documentos para cargar

20

Alguien sabe algún truco en Agregar nueva publicación a:

  1. Inhabilite la carga de audio, video y otros tipos de archivos.

  2. Solo acepta la carga de una imagen (jpg, png, gif).

  3. Limite la carga de cada publicación a una sola imagen (no más de una).

Gracias por adelantado.

José Pablo Orozco Marín
fuente
1
También puede modificar el cargador de Flash para permitir solo un archivo . Esto funciona junto con la solución que Mike dio.
Jan Fabry

Respuestas:

25

Estaba a punto de renunciar a pensar que no era posible o al menos fácil, ¡y luego me topé con el wp_handle_upload_prefilterfiltro que te da exactamente lo que pediste! Aquí está el código:

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.";
  } else if ($post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false)) {
    if (count(get_posts("post_type=attachment&post_parent={$post_id}"))>0)
      $file['error'] = "Sorry, you cannot upload more than one (1) image.";
  }
  return $file;
}

Y aquí hay algunas capturas de pantalla que muestran cómo se ve en acción:

Captura de pantalla del diálogo de carga de WordPress con código para deshabilitar múltiples cargas de cualquier cosa además de archivos de imagen

Captura de pantalla del diálogo de carga de WordPress con código para deshabilitar múltiples cargas de imágenes por publicación

MikeSchinkel
fuente
Gracias Mike Parece funcionar en un proceso de carga no flash, pero el uso de la versión flash muestra: ... Lo sentimos, solo puede cargar un archivo de imagen .GIF, .JPG o .PNG.
José Pablo Orozco Marín
@ José Pablo Orozco Marín - Gracias por encontrar mi error. Creo que encontré el problema y publiqué una versión más nueva del código que creo que ahora funciona para el cargador de flash. ¡Házmelo saber!
MikeSchinkel
@ José Pablo Orozco Marín - Impresionante. Me alegro de poder ayudar.
MikeSchinkel
¿Dónde debo agregar esta línea? ¿Es compatible con tu wp 3.01 y versiones posteriores?
1
Hola Mike. Esta respuesta es bastante antigua. ¿Existe un mejor enfoque teniendo en cuenta la nueva versión de WordPress?
Sisir