Ampliación de la funcionalidad de carga / inserción de medios de WP

2

Estoy escribiendo mi primer complemento para cargar archivos PDF en un directorio especificado por el usuario que no sea el directorio de medios especificado en el menú Medios en la configuración.

Necesito extender el cargador nativo del WP para que los archivos de un tipo particular en este caso los PDF se carguen en un directorio diferente a diferencia de las imágenes. Además, los archivos cargados en este directorio definido por el usuario deben poder verse en la ventana nativa de carga / inserción siempre que surja la necesidad de insertarlos en una página o publicación.

¿Es posible extender el cargador nativo de WP a través de un complemento o tendría que diseñar mi propio cargador? Esto parece ser excesivo para un solo tipo de archivo, dado que ya hay un excelente cargador disponible.

No creo que ahondar en el código de WP y cambiarlo sea una opción.

Gracias de antemano.

    
pregunta navanitachora 20.02.2012 - 11:36

1 respuesta

4

Ambos son posibles.

Insertar archivo adjunto en la biblioteca de medios

Al utilizar la función wp_insert_attachment , puede insertar las imágenes cargadas en la Biblioteca de medios.

Este es el código de ejemplo de los documentos:

<?php
  $wp_filetype = wp_check_filetype(basename($filename), null );
  $wp_upload_dir = wp_upload_dir();
  $attachment = array(
     'guid' => $wp_upload_dir['baseurl'] . _wp_relative_upload_path( $filename ), 
     'post_mime_type' => $wp_filetype['type'],
     'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
     'post_content' => '',
     'post_status' => 'inherit'
  );
  $attach_id = wp_insert_attachment( $attachment, $filename, 37 );
  // you must first include the image.php file
  // for the function wp_generate_attachment_metadata() to work
  require_once(ABSPATH . 'wp-admin/includes/image.php');
  $attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
  wp_update_attachment_metadata( $attach_id, $attach_data );
?>

Cambiar directorio de subidas

Para cambiar el directorio de sus subidas, debe usar el filtro upload_dir . Yoast tiene un tutorial bastante bueno sobre cómo hacerlo.

add_filter('upload_dir', 'my_upload_dir');
$upload = wp_upload_dir();
remove_filter('upload_dir', 'my_upload_dir');

function my_upload_dir($upload) {
    $upload['subdir']   = '/sub-dir-to-use' . $upload['subdir'];
    $upload['path']     = $upload['basedir'] . $upload['subdir'];
    $upload['url']      = $upload['baseurl'] . $upload['subdir'];
    return $upload;
}
    
respondido por el Matthew Muro 29.02.2012 - 22:51

Lea otras preguntas en las etiquetas