WordPress plugin intelligence profile

CSV Resumable Importer for Tainacan

Resumable CSV importer for Tainacan: imports attachments one at a time to avoid execution timeouts and duplicate items on large imports.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version1.1.0
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 5.9 · PHP 8.2
Directory statusactive
Last directory update24 Aug 20262mo ago
Active installations10Adoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records CSV Resumable Importer for Tainacan version 1.1.0 as active, updated 2mo ago and tested up to WordPress 7.1.

Overview

About this plugin

This add-on registers an extra CSV importer in Tainacan 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

g. 150 images in special_attachments ) fails with:

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:

  • Queues the item’s attachment paths/URLs (stored in a transient serialized together with the process state).
  • 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.
WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • background process
  • attachments
  • csv
  • importer
  • tainacan
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 5.9 · PHP 8.2
Update activity24 Aug 20262mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.