WordPress plugin intelligence profile

MksDdn Migrate Content

Reliable chunked migrations powered by custom .wpbkp archives.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version2.8.2
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 5.9 · PHP 7.4
Directory statusactive
Last directory update28 Oct 20265d 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 MksDdn Migrate Content version 2.8.2 as active, updated 5d ago and tested up to WordPress 7.1.

Overview

About this plugin

wpbkp archives. Each bundle contains a manifest, checksum, database segments, media, selected files, and user decisions, so imports stay predictable.

Why MksDdn Migrate Content?

  • Three export modes – Full Site (database + uploads/plugins/mu-plugins/themes), Selected Content (grid of multi-selects for posts/pages/CPTs with title search, scroll lazy load, and Load more, plus ACF Options Pages, with or without referenced media), or Theme Export (individual themes as.wpbkp ).
  • Chunked pipeline – large archives stream through REST API endpoints with resume tokens, so multi‑GB transfers survive flaky networks.
  • User merge control – compare archive vs current users and decide how to merge conflicts.
  • Theme import mode – when a theme archive is detected, choose replace vs merge before applying changes.
  • Integrity & safety –.wpbkp archives ship with manifests and checksums; imports verify capabilities, nonces, and disk space before touching data.
  • Import preflight – unified import is a two-step flow: run preflight (read-only report with field/media/theme path details), then start the real import from the report without uploading the file again (browser uploads are staged server-side between steps). Full-site and theme preflight warn when archive PHP/WordPress major.minor versions differ from the target site.

Feature Highlights

  • Archive format with manifest, checksum, and payload folders ( content.json, media/, options/, filesystem slices).
  • Media scanner that collects featured images, galleries, attachments referenced inside blocks or shortcodes.
  • File-system coverage for wp-content/uploads, wp-content/plugins, wp-content/mu-plugins, wp-content/themes with filters to skip VCS/system files.
  • Chunked upload/download JS client with live progress, auto-resume, and graceful fallback to direct transfer.
  • Server file import — select backup files from wp-content/uploads/mksddn-mc/imports/ without browser uploads; delete unused server backups (including bulk delete) from the import UI.
  • Theme export and import with replace vs merge preview before applying changes.
  • Export preflight — disk space and memory checks before full-site export starts.
  • Drag-and-drop.wpbkp /.json uploader with MIME validation and checksum guardrails ( file-dropzone.js ).
  • Centralized PluginLogger — dedicated log file with rotation; disable via MKSDDN_MC_DISABLE_LOGGING in wp-config.php.

Architecture

The plugin follows SOLID principles and WordPress Coding Standards with a clean, modular architecture:

Service Container & Dependency Injection

  • Centralized ServiceContainer manages all dependencies
  • Service Providers ( CoreServiceProvider, AdminServiceProvider, ExportServiceProvider, ImportServiceProvider, ChunkServiceProvider ) register services
  • All dependencies resolved through container, eliminating direct instantiation
  • Full support for interface-based dependency injection

Request Handlers

  • ExportRequestHandler – handles export requests
  • ImportRequestHandler – delegates to specialized import services (supports unified import via UnifiedImportOrchestrator )
  • UserMergeRequestHandler – processes user merge operations
  • ThemePreviewRequestHandler – handles theme preview cancel operations
  • ChunkRestController – REST API controller for chunked upload/download operations
  • All handlers implement corresponding interfaces for testability

Admin UI

  • Top-level Migrate Content menu with Export and Import subpages
  • Export tabs: Full Site, Selected Content, Theme Export ( AdminPageView, views/admin/* )
  • Selected Content picker: shared multi-select grid for post types and ACF Options Pages ( content-picker.js ) with title-only search, scroll lazy load, and a Load more button on post-type columns; selected options stay pinned in each list
  • Unified import form with preflight report, user preview, and theme preview screens
  • Admin assets: file-dropzone.js, server-file-selector.js (server file list with bulk delete), chunk-transfer.js, content-picker.js, admin-scripts.js, admin-styles.css

Export & Import Core

  • ExportHandler — selected content export (slug-based identifiers, media, taxonomies, ACF, ACF Options Pages)
  • ImportHandler — selected content import (parent-child ordering, slug lookup, Polylang/ACF, ACF Options Pages). For post ACF/SCF fields: update_field() when a local field object exists; scoped meta fallback when the field group is missing or nested structural meta is incomplete; cleanup of non-scalar root “blob” meta left by a failed expand so leaf repeater/group keys remain authoritative
  • SelectionBuilder, ContentSelection — build export selections from admin input (posts/CPTs and Options Page menu_slug s)
  • FullContentExporter, FullContentImporter — full-site archive assembly and restore
  • DumpTableResolver — picks the real {prefix}users / {prefix}usermeta tables from a dump using the dump’s table_prefix (ignores foreign sets such as Plugin Check wppc_* )
  • FullDatabaseExporter, FullDatabaseImporter, SwapTableNames — streaming database export/import; schema recreate uses a swap table then atomic RENAME
  • ThemeExporter, ThemeImporter — theme archive export and filesystem apply
  • OptionsExporter, OptionsImporter — raw WordPress options / widget slices
  • OptionsHelper — discovers ACF Options Pages and exports only field groups located on the selected menu_slug (avoids shared post_id leakage), plus a field-type schema so image/file/gallery IDs are not confused with number fields
  • AttachmentCollector, AttachmentRestorer, AttachmentCollection — media pipeline (posts and ACF Options Page image/file/gallery values)
  • ExportPreflight, ExportMemoryHelper — pre-export disk/memory checks and memory budgeting
  • FilenameBuilder — deterministic archive filenames

Service Layer (Admin)

  • SelectedContentImportService — handles selected content imports
  • FullSiteImportService — manages full site imports
  • ThemeImportService — handles theme archive imports
  • UnifiedImportOrchestrator — orchestrates unified import with automatic type detection; step 1 is always preflight, step 2 runs the real import using a stored file reference
  • ImportPreflightService — read-only analysis for unified import preflight (including PHP/WordPress version mismatch warnings for full-site and theme archives, Selected Content field/media diffs via SelectedContentDiffBuilder, theme path diffs via ThemeFileDiffBuilder, and warnings when Selected Content ACF/SCF field names are not registered locally)
  • SelectedContentDiffBuilder ( Import\SelectedContentDiffBuilder ) — field-name + status inventory for selected-content preflight (core/ACF/meta/taxonomies/media; URL-rewrite awareness; ACF image/file/gallery compared by attachment filename fingerprints to avoid cross-site ID false positives; skips Polylang post_translations and empty archive term lists that the importer would not clear; no before → after value previews)
  • ThemeFileDiffBuilder ( Filesystem\ThemeFileDiffBuilder ) — theme archive path inventory (add/changed/identical/unverified buckets, ACF JSON without modified, Replace delete samples with a per-theme filesystem walk cap, hash budget); slim_for_preview_store() drops path samples before the theme-preview transient (theme preview keeps a link back to the preflight report for samples)
  • PreflightReportStore — short-lived preflight session index in a transient (900s); report body stored as JSON under wp-content/uploads/mksddn-mc/preflight/ (avoids oversized transient/object-cache failures for Selected Content field diffs; report JSON purged on the same TTL), plus follow-up import handles (staged browser uploads, or chunk/server identifiers)
  • ImportTypeDetector — detects import type (full site, selected content, or theme) from archive file
  • ImportFileValidator — validates uploaded files
  • ImportPayloadPreparer — prepares import payloads
  • ContentPickerQueryService — WP_Query helper for the Selected Content picker (exportable post-type allowlist, title-only search scoped to that query, paginated published posts)
  • ServerBackupScanner — scans, validates, and deletes backup files on the server (single and bulk delete)
  • ResponseHandler — manages redirects and status messages
  • NotificationService — handles user notifications
  • ProgressService — tracks operation progress
  • ErrorHandler, PluginLogger — centralized error handling and file logging
  • UserDiffBuilder, UserMergeApplier, UserPreviewStore — user merge workflow
  • ThemePreviewStore ( Themes\ThemePreviewStore ) — stores pending theme import previews (counts-only theme file inventory to avoid oversized transients; fails loudly if the session cannot be stored)

Support & Maintenance

  • ImportArtifactCleanup — stages browser uploads into preflight/; after success or abort (dismiss preflight / cancel user or theme preview) renames ephemeral archives into imports/ (no second multi-GB copy) and clears chunk job metadata; purges expired preflight files (report report-*.json bodies use the 900s session TTL; staged archives keep the longer default)
  • DeactivationCleanup — clears temporary upload state and service directories when the plugin is deactivated
  • PostImportMaintenance — cache/rewrite cleanup after full import and emergency purge if the database was partially updated; global flush plus targeted wp_cache_flush_group() when supported; filter mksddn_mc_post_import_object_cache_flush_groups. WooCommerce maintenance is not called in the import request that replaced wp-content/plugins (that process may still have WooCommerce 10.9 classes in memory while 11.x files are on disk). The import request only deletes wc_products_onsale, wc_featured_products, wc_outofstock_count, and wc_low_stock_count, and calls WC_Cache_Helper::get_transient_version( 'product', true ) when that method is already loaded. run_woocommerce_maintenance() runs on the next fresh request via a single WP-Cron event, or an admin-post loopback when cron cannot start. Core.maintenance is removed just before that request is spawned; the plugin runtime lock stays until import shutdown. The one-time token is saved with update_option() so the next process can read it after object-cache.php changes. wc_delete_product_transients() runs only if the loaded Automattic\WooCommerce\Internal\Utilities\ProductUtil has delete_product_transients_for_products. Maintenance failures are logged and do not fail the import.
  • FullImportMaintenance — file-based runtime lock and early 503 gate while a full-site import is running (admin, CLI, cron exempt; REST blocked unless explicitly allowed)
  • ImportLock — prevents concurrent import operations
  • PreflightStagingPath — validates staged preflight file paths
  • ThemeArchivePathHelper — normalizes theme archive entry paths
  • EnvironmentVersionComparator — compares archive vs target PHP/WordPress major.minor versions for import preflight warnings
  • DomainReplacer, SiteUrlGuard, FilesystemHelper, MimeTypeHelper

Archive Layer

  • Packer, Extractor —.wpbkp archive pack/unpack
  • FullArchivePayload — memory-efficient JSON payload handling; read_with_manifest() loads payload and manifest.json in one archive open
  • ContentCollector — filesystem content collection for exports
  • ArchiveValidator, ValidationResult — manifest and checksum validation

Contracts (Interfaces)

All key components implement interfaces:

* ExporterInterface, ImporterInterface

* MediaCollectorInterface, ChunkJobRepositoryInterface

* UserPreviewStoreInterface, ThemePreviewStoreInterface, UserDiffBuilderInterface, UserMergeApplierInterface

* NotificationServiceInterface, ProgressServiceInterface

* ArchiveHandlerInterface, ValidatorInterface

* Request handler interfaces for all handlers

Error Handling

  • Specialized exceptions: ValidationException, FileOperationException, DatabaseOperationException, ImportException, ExportException
  • Centralized ErrorHandler for consistent error processing
  • Proper logging and user-friendly error messages
  • Validation classes: ArchiveValidator, ImportDataValidator, ExportDataValidator, FileValidator

Performance

  • BatchLoader for optimized database queries (prevents N+1 problems)
  • Efficient media collection with batch processing ( AttachmentCollector, AttachmentRestorer )
  • Chunked transfer for large files via REST API ( ChunkRestController, ChunkJobRepository )
  • Memory-efficient streaming for large archives ( FullArchivePayload, ExportMemoryHelper )
  • ContentCollector for filesystem content collection
  • Streaming FullDatabaseExporter with adaptive batch sizes

Security

  • All admin operations check current_user_can('manage_options')
  • Nonce verification for all forms and AJAX requests
  • REST API endpoints protected with permission callbacks
  • Input sanitization using WordPress sanitization functions
  • Output escaping with esc_html(), esc_attr(), esc_url()
  • File upload validation with MIME type checking
  • Path traversal protection for server file access and deletion ( ServerBackupScanner )
  • Path traversal protection for archive extraction (full site + theme import)
  • SiteUrlGuard prevents accidental site URL changes during import
  • ImportLock prevents concurrent import operations
  • DomainReplacer safely handles URL replacement during migrations
WordPress.org metadata

Plugin tags

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

  • backup
  • export
  • import
  • migration
  • wpbkp
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 7.4
Update activity28 Oct 20265d 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

Version2.8.12.8.2
WordPress compatibility7.1.37.1.4
Version2.8.02.8.1
WordPress compatibility7.1.27.1.3
Version2.7.22.8.0
Version2.7.12.7.2
WordPress compatibility7.17.1.2
Version2.7.02.7.1
Version2.6.12.7.0
WordPress requirement6.25.9
PHP requirement8.07.4
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.