plugin-icon

MksDdn Migrate Content

Автор: Max·
Reliable chunked migrations powered by custom .wpbkp archives.
Версия
2.3.1
Активные установки
10
Последние изменения
Apr 30, 2026

MksDdn Migrate Content is a clean-room migration suite that packages your site into deterministic .wpbkp archives. Each bundle contains a manifest, checksum, database segments, media, selected files, and user decisions, so imports stay predictable.

Why MksDdn Migrate Content?

  • Dual export modes – choose Full Site (database + uploads/plugins/mu-plugins/themes) or Selected Content (multi-select posts/pages/CPTs) with or without referenced media.
  • 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), then start the real import from the report without uploading the file again (browser uploads are staged server-side between steps).

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 directly from wp-content/uploads/mksddn-mc/imports/ directory without browser uploads.
  • Custom .wpbkp drag-and-drop uploader with checksum guardrails (UI polish deferred to next milestone, functionality already complete).

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

Service Layer

  • 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
  • PreflightReportStore — short-lived transient storage for preflight reports and follow-up import handles (staged browser uploads under wp-content/uploads/mksddn-mc/preflight/, or chunk/server identifiers)
  • ImportTypeDetector — detects import type (full site or selected content) from archive file
  • ImportFileValidator — validates uploaded files
  • ImportPayloadPreparer — prepares import payloads
  • ServerBackupScanner — scans and validates backup files on the server
  • ResponseHandler — manages redirects and status messages
  • NotificationService — handles user notifications
  • ProgressService — tracks operation progress
  • ErrorHandler — centralized error handling and logging
  • UserDiffBuilder — builds user difference comparison
  • UserMergeApplier — applies user merge operations
  • ThemePreviewStore — stores pending theme import previews
  • DeactivationCleanup — clears temporary upload state and service directories when the plugin is deactivated
  • PostImportMaintenance — centralizes cache/rewrite cleanup after full import and emergency purge if the database was partially updated; performs global flush plus targeted wp_cache_flush_group() when supported, bumps posts/terms/comments last_changed hooks, exposes mksddn_mc_post_import_object_cache_flush_groups filter, integrates page-cache plugins via best-effort function calls and hooks
  • 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)

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)
  • Chunked transfer for large files via REST API (ChunkRestController)
  • Memory-efficient streaming for large archives
  • FullArchivePayload for efficient archive payload handling
  • ContentCollector for filesystem content collection

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 (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 6.9.4
Этот плагин можно скачать и использовать при .