Pregunta sobre Simple Download Monitor de Wordpress:

Eliminación de material en línea en lugar de accesorios

Un usuario preguntó 👇

Me gustaría agregar una nueva solicitud de función para mejorar las opciones de ciertas descargas para permitir que los administradores especifiquen si quieren que el encabezado de eliminación use contenido «en línea» en lugar de «adjunto» para permitir que el navegador abra el archivo en el navegador (si el navegador admite el tipo de archivo).

El caso de uso específico que me interesa es permitir que un PDF se abra en el navegador en lugar de obligar al usuario a descargar el archivo constantemente. Nuestro PDF cambiará con el tiempo y no queremos que los usuarios descarguen copias del archivo una y otra vez si solo necesitan ver una versión del mismo.

Revisé el código del plugin y parece que la información post_meta podría ingresarse en la función sdm_dispatch_file y esa función podría revisar si la descarga «en línea» o «adjunto» debe usarse en el encabezado de eliminación de contenido.

*** Actualización *** Me di cuenta de que inmediatamente después de configurar la eliminación de contenido en «en línea», creo que el encabezado «tipo de contenido» debe modificarse para que el tipo de mime del archivo se pueda devolver al navegador, así que sepa por el navegador qué tipo de archivo es. Esto probablemente agrega mucha complejidad a cambiar el valor del encabezado de «adjunto» a «en línea», ¡pero lo apreciaríamos!

Pido disculpas si este no es el proceso adecuado para enviar solicitudes de funciones; no pude encontrar ninguna documentación que detalle el proceso de solicitud.

¡Gracias por tu tiempo!

Este tema fue modificado hace 2 años, 1 mes por. Este tema fue modificado hace 2 años, 1 mes por.

(@mbrsolution)

Hace 2 años, 1 mes

Hola, por favor revisa lo siguiente documentación. Por favor, avíseme si esto es a lo que se refiere también.

Gracias

Lanzador de hilos

(@aceberle)

Hace 2 años, 1 mes

Hola, Gracias por tu respuesta. Desafortunadamente, no estoy hablando de abrir la descarga en una nueva ventana, lo que aún hace visible el cuadro de diálogo de descarga.

Quiero evitar que aparezca el cuadro de diálogo de descarga y, en su lugar, mostrar al navegador el contenido del archivo. Por ejemplo, google chrome admite de forma nativa el formato de archivo pdf y mostrará pdf en el navegador si el encabezado de eliminación de contenido está configurado como «en línea» y el encabezado de tipo de contenido está configurado como «aplicación / pdf». Desafortunadamente, el plugin está actualmente codificado para encabezados de eliminación de contenido «adjuntos» y escritura de contenido «aplicación / secuencia de octetos», lo que obliga a que el diálogo de descarga esté presente incluso si el navegador puede escribir manejar archivos de forma nativa.

Esta respuesta fue modificada hace 2 años, hace un mes por.

(@mbrsolution)

Hace 2 años, 1 mes

Hola, veo lo que quieres decir. Los desarrolladores de plugins seguirán investigando la aplicación.

Gracias

(@ mra13)

Hace 2 años, 1 mes

Hay un gancho de acción que puede usar para anular completamente la dirección de descarga. Entonces puedes enviarlo como quieras.

Consulte el enlace de actividad de gestión de descargas en la siguiente documentación:
https://simple-download-monitor.com/simple-download-monitor-action-hook-reference/

Lanzador de hilos

(@aceberle)

Hace 2 años, 1 mes

¡Gracias por su respuesta! Vi el gancho de acción y lo estoy usando como solución actual. Desafortunadamente, este gancho es lo suficientemente ancho y para usarlo tengo que copiar gran parte del código del plugin original, como llamar al filtro que debe usarse o redirigir la representación de php y luego ejecutar la respuesta adecuada de sin. Tomaré mis cambios por turnos y volveré con un archivo de parche con una actualización planificada.

Gracias de nuevo

(@ mra13)

Hace 2 años, 1 mes

No dude en sugerir otra acción o gancho de filtro que podamos agregar al plugin (si eso lo ayuda a obtener un mejor control).

Lanzador de hilos

(@aceberle)

Hace 2 años, 1 mes

Sería útil si colocas el modo «sdm_dispatch_file» en sdm-download-request-handler.php, colocas todos los encabezados en una fila con pares de nombre / valor para los nombres y valores del encabezado, luego lo filtras engancha y pasas el nombre de archivo e ID de publicación. Luego, podríamos agregar, eliminar o reemplazar la carga útil del archivo en función de cualquier metadato adicional que podamos adjuntar a la publicación.

Como esto:


function sdm_dispatch_file($filename, $download_id) {

    if (headers_sent()) {
	trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, headers already sent.");
	return;
    }

    if (!is_readable($filename)) {
	trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, file is not readable.");
	return;
    }

    $headers = array(
        'Content-Description' => 'File Transfer',
        'Content-Type' => 'application/octet-stream', // http://stackoverflow.com/a/20509354
        'Content-Disposition' => 'attachment; filename="' . basename($filename) . '"',
        'Expires' => '0',
        'Cache-Control' => 'must-revalidate',
        'Pragma' => 'public',
        'Content-Length: ' => filesize($filename)
    );
    $headers = apply_filters('sdm_dispatch_download_headers', $headers, $download_id, $filename);
    foreach ($headers as $name => $value) {
        header("$name: $value");
    }
    ob_end_clean();
    readfile($filename);
    exit;
}

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *