Title: CSV Resumable Importer for Tainacan
Author: bauhaustech
Published: <strong>23 de junio de  2026</strong>
Last modified: 24 de agosto de  2026

---

Buscar plugins

![](https://ps.w.org/csv-resumable-importer-for-tainacan/assets/banner-772x250.png?
rev=3583877)

![](https://ps.w.org/csv-resumable-importer-for-tainacan/assets/icon.svg?rev=3583877)

# CSV Resumable Importer for Tainacan

 Por [bauhaustech](https://profiles.wordpress.org/bauhaustech/)

[Descargar](https://downloads.wordpress.org/plugin/csv-resumable-importer-for-tainacan.1.1.0.zip)

 * [Detalles](https://es-ar.wordpress.org/plugins/csv-resumable-importer-for-tainacan/#description)
 * [Valoraciones](https://es-ar.wordpress.org/plugins/csv-resumable-importer-for-tainacan/#reviews)
 *  [Instalación](https://es-ar.wordpress.org/plugins/csv-resumable-importer-for-tainacan/#installation)
 * [Desarrollo](https://es-ar.wordpress.org/plugins/csv-resumable-importer-for-tainacan/#developers)

 [Soporte](https://wordpress.org/support/plugin/csv-resumable-importer-for-tainacan/)

## Descripción

This add-on registers an extra CSV importer in [Tainacan](https://tainacan.org/)
whose attachment processing is **resumable**: the files listed in the `special_attachments`
column are imported **one per background iteration**, instead of all at once.

It does **not** modify Tainacan core — it registers an additional importer through
the `tainacan-register-importers` hook, so it keeps working across Tainacan updates.

This is an independent add-on developed by Bauhaus Tech. It is **not affiliated 
with, endorsed by, or part of** the Tainacan project.

#### The problem it solves

A CSV import in which a single item has many attachments (e.g. 150 images in `special_attachments`)
fails with:

    ```
    PHP Fatal error: Maximum execution time of 360 seconds exceeded in .../class-wp-image-editor-imagick.php
    ```

…and then **restarts from the beginning, duplicating items**.

The stock Tainacan CSV importer imports **all** of an item’s attachments inside 
a single `after_inserted_item()` call. Each file triggers `wp_generate_attachment_metadata()`,
which generates thumbnails through Imagick — an expensive operation. The background
process only checks its soft time limit (~20s) **between** `task()` iterations; 
since the 150 attachments run inside a single iteration, that limit is never checked
mid-loop. The item alone exceeds PHP’s hard `max_execution_time`, the process dies
mid-task **without persisting progress**, and the cron healthcheck **re-dispatches
the batch from the last checkpoint** — recreating already-imported items.

#### How it works

Instead of importing attachments inline, this importer:

 1. **Queues** the item’s attachment paths/URLs (stored in a transient serialized together
    with the process state).
 2. Processes **one attachment per iteration**, staying on the current item until the
    queue is empty.

Because each attachment becomes its own iteration, the soft 20s limit applies **
between files**: the batch checkpoints regularly and the import becomes resumable.
Idempotency is reinforced by persisting the already-created item id, so a resume
continues the attachments instead of recreating the item.

#### Known limitations

Because this plugin **cannot modify Tainacan core**:

 * A single file whose processing alone exceeds `max_execution_time` still fails(
   pathological case).
 * Progress is still persisted at the core’s ~20s `handle()` checkpoint, not per
   iteration (forcing a per-iteration checkpoint would require changing `Background_Importer::
   task()` in core). A fatal **within the same 20s window** may reprocess what was
   done since the last checkpoint. The definitive fix is the equivalent change upstream
   in Tainacan.

## Instalación

 1. Upload the `csv-resumable-importer-for-tainacan` folder to `/wp-content/plugins/`,
    or install the ZIP via **Plugins  Add New  Upload Plugin**.
 2. Activate **CSV Resumable Importer for Tainacan** in **Plugins**.
 3. Requires the **Tainacan** plugin to be installed and active.
 4. In **Tainacan  Importers**, choose **“CSV (resumable attachments)”** instead of
    the default CSV importer.

## Preguntas frecuentes

### Does it modify Tainacan core?

No. It registers an additional importer through Tainacan’s `tainacan-register-importers`
hook and subclasses the core CSV importer. Tainacan updates do not overwrite it.

### Are the import options different from the native CSV importer?

No. Delimiter, mapping, `server_path` and the special columns (`special_document`,`
special_thumbnail`, `special_attachments[|APPEND|REPLACE]`) work exactly as in the
native importer. Only the way attachments are processed changes.

### Is this an official Tainacan plugin?

No. It is an independent add-on by Bauhaus Tech, not affiliated with the Tainacan
project.

### Does it fix every possible timeout?

It removes the real-world cause (a single item importing many attachments in one
uninterruptible call). See “Known limitations” for the residual edge cases that 
would require a core change.

## Reseñas

No hay reseñas para este plugin.

## Colaboradores y desarrolladores

“CSV Resumable Importer for Tainacan” es un software de código abierto. Las siguientes
personas han colaborado con este plugin.

Colaboradores

 *   [ bauhaustech ](https://profiles.wordpress.org/bauhaustech/)
 *   [ Fred Marvila ](https://profiles.wordpress.org/marvila/)

[Traduce “CSV Resumable Importer for Tainacan” a tu idioma.](https://translate.wordpress.org/projects/wp-plugins/csv-resumable-importer-for-tainacan)

### ¿Interesado en el desarrollo?

[Revisa el código](https://plugins.trac.wordpress.org/browser/csv-resumable-importer-for-tainacan/),
echa un vistazo al [repositorio SVN](https://plugins.svn.wordpress.org/csv-resumable-importer-for-tainacan/),
o suscríbete al [log de desarrollo](https://plugins.trac.wordpress.org/log/csv-resumable-importer-for-tainacan/)
por [RSS](https://plugins.trac.wordpress.org/log/csv-resumable-importer-for-tainacan/?limit=100&mode=stop_on_copy&format=rss).

## Registro de cambios

#### 1.0.0

 * Initial release. Resumable CSV importer that processes `special_attachments` 
   one per background iteration.

## Meta

 *  Versión **1.1.0**
 *  Última actualización **hace 2 meses**
 *  Instalaciones activas **10+**
 *  Versión de WordPress ** 5.9 o superior **
 *  Testeado hasta **7.1.3**
 *  Versión de PHP ** 8.2 o superior **
 *  Idioma
 * [English (US)](https://wordpress.org/plugins/csv-resumable-importer-for-tainacan/)
 * Etiquetas:
 * [attachments](https://es-ar.wordpress.org/plugins/tags/attachments/)[csv](https://es-ar.wordpress.org/plugins/tags/csv/)
   [importer](https://es-ar.wordpress.org/plugins/tags/importer/)[tainacan](https://es-ar.wordpress.org/plugins/tags/tainacan/)
 *  [Vista avanzada](https://es-ar.wordpress.org/plugins/csv-resumable-importer-for-tainacan/advanced/)

## Valoraciones

Todavía no se enviaron reseñas.

[Your review](https://wordpress.org/support/plugin/csv-resumable-importer-for-tainacan/reviews/#new-post)

[Ver todas las reseñas](https://wordpress.org/support/plugin/csv-resumable-importer-for-tainacan/reviews/)

## Colaboradores

 *   [ bauhaustech ](https://profiles.wordpress.org/bauhaustech/)
 *   [ Fred Marvila ](https://profiles.wordpress.org/marvila/)

## Soporte

¿Tenés algo que decir? ¿Necesitás ayuda?

 [Ver el foro de asistencia](https://wordpress.org/support/plugin/csv-resumable-importer-for-tainacan/)