WP Manifestindependent plugin directory
manifest / updates / splitpress

SplitPress

Wordpress Plugin to backup and restore large WP Sites.

by Med Toledo · github.com/medardotoledo/splitpress · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/medardotoledo/splitpress/archive/refs/heads/main.zip

Readme

SplitPress

Avoid timeout crashes, memory exhausts, and server upload limits when migrating large WordPress installations.

SplitPress is a premium, developer-focused WordPress plugin designed to solve the "huge site migration crash" problem. Traditional backup tools fail on sites with large media libraries (e.g., multi-gigabyte uploads) or strict hosting limitations (e.g., 500MB upload limits, low PHP execution timeout, lack of mysqldump execution rights).

SplitPress solves this by dividing migrations into two distinct, manageable workflows:

  1. Configuration Package (.wpsm): A lightweight package containing a pure-PHP SQL dump (no command-line dependencies) and configuration metadata (active plugins, theme context).
  2. Segmented Media Archives (ZIP): An asynchronous, chunked packaging engine that slices the /wp-content/uploads/ directory into multiple smaller ZIP files (e.g., 200MB each) using AJAX recursion.

Key Features

  • ⚡ Zero Timeouts (AJAX Chunking): Compresses media sequentially in bounded file list ranges, preventing PHP max_execution_time timeouts.
  • 🛠️ Pure-PHP SQL Exporter: Safely exports all database tables in batches of 500 rows. Works on any host without requiring exec() or mysqldump.
  • 📦 Adjustable Archive Size: Allows the user to select the chunk limit (e.g., 100MB to 500MB) to respect target host upload_max_filesize limits.
  • 🔌 Zero External Dependencies: Native filesystem iterators and the standard PHP ZipArchive extension.
  • 🖥️ Premium Admin Dashboard: Modern Dark Mode dashboard built with native JS/AJAX, clean progress indicators, and an interactive import dropzone.

How It Works

Export Pipeline

  1. The database is queried chunk-by-chunk and written to a temporary SQL file, which is then compressed inside a .wpsm (WordPress Split Migrate) zip wrapper along with active theme/plugin definitions.
  2. The filesystem scanning engine maps /wp-content/uploads/ recursively into a cached JSON index.
  3. The frontend triggers recursive AJAX calls. The server packs folders into sequential ZIPs (e.g., part1.zip, part2.zip), cutting off each archive as soon as the files' aggregate size exceeds the user-specified threshold.

Import Pipeline

  1. The user uploads the .wpsm configuration file. The plugin parses the database instructions line-by-line, executing them without timing out.
  2. The user uploads the media ZIP files sequentially. The plugin extracts them directly into /wp-content/uploads/, matching their relative folder paths.

Installation & Setup

  1. Clone this repository or download the ZIP:
    git clone https://github.com/medtoledo/splitpress.git
  2. Upload the splitpress folder to your WordPress plugins directory (/wp-content/plugins/).
  3. Activate SplitPress through the 'Plugins' menu in WordPress.
  4. Navigate to SplitPress in the WP Admin menu.

Tech Stack & Highlights

  • Backend: WordPress API, PHP OOP, ZipArchive, RecursiveDirectoryIterator, Database streaming.
  • Frontend: Vanilla JS, jQuery (WP Core wrapped), AJAX, CSS3 Grid/Variables, HTML5 Drag & Drop.
  • Security: Cryptographic Nonces for AJAX calls, WP capability validation (manage_options), file input sanitization.

License

This project is licensed under the GPL2 License - see the LICENSE file for details.

Read the full README on GitHub →