WooCommerce: Error al subir tipo de archivo CSV por motivos de seguridad

Ocurre de vez en cuando, pero desde la última actualización de WordPress parece que es algo común. Me refiero a que al importar productos desde CSV usando la herramienta integrada en WooCommerce, este muestra un error que dice que…

Lo siento, este tipo de archivo no está permitido por motivos de seguridad.

¿Ehh? ¡Pero si es precisamente el tipo de archivo que me pide WooCommerce para importar productos! ¿Qué clase de broma es esta?

Bueno, cosas que pasan en las actualizaciones ¿nos seguimos quejando o lo arreglamos?

Soluciones al error de seguridad en la importación de archivos CSV de WooCommerce

Vamos a ver posibles soluciones para este problema, mientras no se lance una actualización que lo solucione. Y reitero que parece ser un error de WordPress, no de WooCommerce en sí, que seguramente se solucionará pronto.

Renombrar el archivo CSV

Una posible solución sería renombrar la extensión del archivo CSV.

Me refiero a que si el archivo a importar se llama productos-proveedorx-noviembre.csv , cambiarlo a productos-proveedorx-noviembre.txt  e indicarle al importador de WooCommerce que utilice ese archivo.

Que yo sepa ha funcionado en muy pocas ocasiones, pero no cuesta nada probar, te evitas otro tipo de actuaciones, como verás en las siguientes posibles soluciones.

Sube el CSV a tu servidor

Mucha gente no sabe que también se pueden cargar CSVs desde una ruta concreta de un servidor, activando las opciones avanzadas del importador CSV de WooCommerce.

Y qué mejor momento para probar esta opción que si el importador te da errores ¿no?

Pues simplemente pulsa en el enlace para mostrar las opciones avanzadas y, en la caja que aparecerá, introduce la ruta absoluta en la que hayas subido previamente el archivo CSV.

Mira tú por dónde ¿a que no pensabas que un error te iba a enseñar algo nuevo? Pasa siempre 🙂

Si tampoco así te funciona, vamos a ponernos serios…

Anula las restricciones de subida de archivos de WordPress

Esto es un poco bestia, y no es una solución para dejarla activa siempre, pero funciona casi seguro.

Me refiero a añadir al archivo wp-config.php  la constante que elimina toda restricción de subida de archivos en WordPress, esta:

define(‘ALLOW_UNFILTERED_UPLOADS’, true);

El peligro de esta constante es que así permites la subida de archivos sin filtro alguno, a lo loco y a cualquier usuario, lo que puede ser una brecha de seguridad que podría aprovechar un usuario malintencionado.

Una solución alternativa usando este mismo método, sería instalar el plugin Members y añadir al perfil de usuario administrador la capacidad llamada HTML sin restricciones.

Crear una función que desactive la comprobación del tipo de archivo

Otro método algo menos radical que el anterior sería restringir a WooCommerce la comprobación de tipos de archivo, eliminando así de un plumazo la restricción de seguridad sobre archivos CSV.

Para ello debes añadir lo siguiente a tu plugin de personalizaciones o archivo functions.php  del tema activo.

/**
 * Corregir en WooCommerce - Lo siento, este tipo de archivo no está permitido por motivos de seguridad.
 * 
 * @since 1.0.0
 */
if( ! function_exists( 'prefix_woocommerce_csv_product_import_valid_filetypes' ) ) :
	function prefix_woocommerce_csv_product_import_valid_filetypes( $defaults ) {

		// Omitir para la versión 7.2 de PHP
		$defaults['csv'] = 'text/plain';

		return $defaults;
	}
	add_filter( 'woocommerce_csv_product_import_valid_filetypes', 'prefix_woocommerce_csv_product_import_valid_filetypes' );
endif;

Otra función que también podría funcionar sería esta:

/**
* Corregir en WooCommerce - Lo siento, este tipo de archivo no está permitido por motivos de seguridad.
*
* @since 1.0.0
*/
add_filter("mime_types", "add_csv_plain");
function add_csv_plain($mime_types)
{
    unset($mime_types['txt|asc|c|cc|h|srt']);
    $mime_types['txt|asc|c|cc|h|srt|csv'] = 'text/plain';
    return $mime_types;
}
add_filter("woocommerce_csv_product_import_valid_filetypes", "add_csv_plain_woocommerce");
function add_csv_plain_woocommerce()
{
    return [
        'txt|csv' => 'text/plain',
        'csv' => 'text/csv',
    ];
}

Desactivar la comprobación del MIME real

Una solución que, en mis pruebas, ha funcionado siempre, es la desactivación de la comprobación del tipo MIME real.

Para ello debes añadir esta función a tu plugin de arreglos y personalizaciones o, de nuevo, al archivo functions.php del tema activo:

/* Desactivar comprobación tipos MIME reales */
function ayudawp_desactivar_comprobar_mime_real( $data, $file, $filename, $mimes ) {
	$wp_filetype = wp_check_filetype( $filename, $mimes );
	$ext = $wp_filetype['ext'];
	$type = $wp_filetype['type'];
	$proper_filename = $data['proper_filename'];
	return compact( 'ext', 'type', 'proper_filename' );
}
add_filter( 'wp_check_filetype_and_ext', 'ayudawp_desactivar_comprobar_mime_real', 10, 4 );

Guardas los cambios y pruebas. Ya te digo que en mi caso ha funcionado de maravilla.

Desactivar la comprobación del MIME real con un plugin

Si no te atreves a tocar código, hay un plugin algo antiguo que también hace lo mismo. Lo instalas, lo activas y listo. Se llama Disable Real MIME Check.

Esperar a una próxima actualización de WordPress que arregle el problema

Y claro, como siempre, puedes esperar a que una futura actualización de WordPress solucione el problema. Mientras tanto puedes aplicar alguna de las soluciones anteriores, subir tu CSV y quitar el código o plugin que hayas utilizado para poder cargar el CSV.


Y ya, no se me ocurren más posibles soluciones. Si te ha servido alguna deberías poder importar tu CSV sin problemas y, tras la asignación de columnas habitual, ver esta bonita pantalla…

Si sabes de alguna posible solución más estamos deseando que las compartas en los comentarios.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(7 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

1 comentario en “WooCommerce: Error al subir tipo de archivo CSV por motivos de seguridad”

Deja un comentario

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

 

Ir arriba Ir al contenido