ImpEx is a WordPress plugin that allows you to import and export data from and to your WordPress installation.
The primary goal for ImpEx is to provide a true Open Source WordPress Plugin for importing/exporting your WordPress data (including data from third-party plugins/themes).
This plugin is in an early (but working) stage.
Impex provides :
WordPress hooks for third-party plugins to expose their own data to ImpEx Import / Export without being dependent on Impex.
a (semi) streaming architecture for large data exports/imports.
Definition of configurable import/export profiles defining data providers to use and configuration of these data providers
- A user interface for importing / exporting data via ImpEx WP admin screen
the ImpEx API is designed to support resumable/cancelable imports and exports.
ImpEx provides a REST API integrated into WordPress
ImpEx is explicitly designed for use in managed WordPress instances
ImpEx development relies heavily on PHP unit testing its feature set to be stable and consistent.
a CLI for importing/exporting data via ImpEx REST interface.
The ImpEx CLI can be used as an alternative to the ImpEx WP admin screen.
related NPM package @cm4all-wp-impex/generator enabling transformation of any content to Impex Export format.
Using this package you’re able to convert any content to WordPress and import it using the ImpEx plugin. See the Tutorial
or watch the walk-trough at YouTube.
Your help is welcome !!
Impex uses modern browser features as building blocks.
Right know some of them might not be available in some browsers :
File System Access API to export and import data to the local filesystem. This browser feature is mandatory.
Right now Chromium based browsers (except of Brave who disabled this feature) and Safari supporting the File System Access API.
As of now, it’s unclear if and when Firefox will support the File System Access API.
As an alternative you can use the ImpEx CLI to trigger import/export operations on the commandline.
Depending on your browser version the Crypto API feature we use (
window.crypto.randomUUID) may not be supported by your browser.
As of now, all “green” browser support it.
But if you use an older version of a browser it might happen that Impex will not work since the browser feature is not available in your browser.
Where can I find the ImpEx documentation ?
Documentation available at the Impex plugin GitHub pages
Please file bugs and feature requests at the Impex plugin GitHub issues
Why ImpE written in PHP 8 ?
Because PHP 8
is much faster than any previous PHP Version
allows a much cleaner PHP code
The plugin version available here (at WordPress plugin directory) is transpiled down to PHP 7.4
If you prefer to use the PHP 8 version, you can download it from the ImpEx WordPress plugin GitHub repository
What’s the current feature set ?
ImpEx provides right now generic providers for
import/export WordPress posts/pages including attachments/uploads and custom post types
import/export configurable database tables (can be used export data from third party plugins/themes)
import/export configurable wp_options (can be used export data from third party plugins/themes)
ImpEx imports and exports data as plain files directly to your local filesystem so that you can operate on the exported data (and attachments) without hassle.
ImpEx supports snapshots to allow you to rollback to a previous state of your data without downloading the whole data to your local machine
What’s planned for the future ?
an intuitive user interface allowing to configure import/export profiles and configuration of the used data providers based on React and JSON Schema
- fixed unit tests for wp 6.2 (b76f9dc)
- impex uses anonymous filenames for attachment blobs (6a47bac)
- removed obsolete vscode launch configuration (ea9d509)
- imported option “theme_mods_trinity-core” will be updated after final import (14b1865)
- remap imported reusable block ids (a8828db)
- remap imported reusable block ids (f2c91ee)
- added remapping site_logo and site_icon (f669013)
- export example exports site logo, title and description (362b9c2)
- export website title,description and logo (52a8084)
- exporting default homepage options (968ca33)
- finalized remapping imported nav_menu refs and several options referencing posts (93c27c3)
- pinned ubuntu version for github action (ead3c11)
- disabled example filter hiding impex import profiles (6356f97)
- GitHub action (cf49192)
- GitHub permission issue (2e6e688)
- GitHub permission issue (f6a83d1)
- make: fixed a few caveats in Makefile (48330ae)
- mdbook image: added dopcker label pointing to the github repo (319e870)
- nav menu import doesnt chrash anymore (d8e9959)
- patched Makefile to fit GitHub action needs (174e666)
- @cm4all-wp-impex/generator: fixed double passing slicePath argument on migrate callback (8e11db4)
- @cm4all-wp-impex/generator: added missing migrate callback arguments (9fc96ff)
- @cm4all-wp-impex/generator: added migrate function to minimize boilerplate code when writing impex export transformations (209ad2d)
- @cm4all-wp-impex/generator: fixed chunk directory creation in
- @cm4all-wp-impex/generator: fixed testcases (3e58f1d)
- imported media metadata will be generated after consuming slices (1373a6e)
- relax post consume callback error handling (c309d1b)
- simple import button disabled style workaround added for current gutenberg (6b5c685)
- use external mdbook image for documentation generation within ci (639e824)
- fixed extensionless attachment imports (ab28dc3)
- fixed getFiles() in @cm4all-wp-impex/generator (570f5e4)
- image attachments without extension can be handlet by impex (f8d157f)
- typos fixed (599e950)
- updated dev environment to wordpress 6.0.2 (271b33d)
- added cleanup option to “advanced import” ui (74ffc47)
- added import option to cleanup wordpress before import (98cb602)
- impex cli import now supports providing options to the import process (9064a77)
- impex cli supports import options like “impex-import-option-cleanup_contents” (b218221)
- import/export filters can now be filtered using wp filters (f94ae55)
- simple import roughly implemented (2836697)
- browser filesystem-api will use consistent snaopshot directory handle (3960b98)
- consumeImport will gracefully handle not set option impex-import-option-cleanup_contents (4ac7660)
- ensuring that the window.crypto api is available before using it (4b818b4)
- fixed crypto api detection (893ff0d)
- fixed error message if browser crypto api is missing (9544a00)
- fixed some typos (a79decb)
- getProfile() should return an ArrayIterator (ad6ace4)
- i18n translations fixed (8a7f392)
- impex error popup can handle multiline messages (f6b51e1)
- import will no more fail on unknown post type import (5e25505)
- import will not fail on unknown taxonomy references (eff2c2e)
- made snapshot import more sensitive about files/directories (f6120d4)
- relax import of users with illegal login (fea4c5a)
- simple ui labels fixed (be850cf)
- test environment runs only with disabled wp cron (ff24148)
- upgraded rector command to latest rector cli (bcfc886)
- import will no more fail on unknown post type import (df37c18)
- made snapshot import more sensitive about files/directories (e38ed41)
- import will not fail on unknown taxonomy references (c2016b5)
- upgraded rector command to latest rector cli (0976dcf)
- @cm4all-wp-impex/generator: package.json repository property fixed (b140ffe)
- impex-cli: made import option “profile” optional. default value is “all” (82517e2)
- rector upgrade (fae99b8)
- updated recommended vscode extensions (facf38e)
- updated supported wordpress version to 6.0 (be2a62d)
- added missing youtube links to npm package and wp plugin (62e225b)
- Documentation polished (1ae7828)
- removed obsolete files (0bc19e6)
- added npm package @cm4all-wp-impex publish informations (c0c659a)
- attachment: added slice property ‘impex:post-references’ (fca0be4)
- impex-transform: add testcase core/image injecting
figcaption> using onLoad hook (278a0d9)
* impex-transform: final attempt to fix resetting block transforms for tape tests (8c793f7)
* provide NPM_TOKEN to semantic-release (5f2fed5)
- assert that WP_Filesystem() is already declared (5ff641f)
- fixed impexcli docker image build (ce435ee)
- fixed variable naming typo (e408ade)
- impex-cli-test: fixed paths to impex-cli (170af21)
- import php namespace issue fixed (342e5bd)
- wp-env: htaccess gets also deployed to test-Wordpress (993b275)
- impex-cli import and export finally works (482c87e)
- added additional links to impex plugin entry in plugins.php (4bd2a8a)
- fixed mdbook image generation (2f613fa)
- fixed typo in .wp-env.override.json (8b9227d)
- impex plugin readme template updated (56344dd)
- impex-cli: improved impex-cli logging (8476260)
- fixed wordpress.org subversion commit command in Makefile (3d7baa5)
- improved Makefile (8272a02)
- Makefile target “deploy-to-wordpress” – fixed SVN_* variable provisioning (d639f59)
- Makefile target “deploy-to-wordpress” – fixed typo in svn commit message (baedfde)
- Makefile target “deploy-to-wordpress” – SNV_* parameter provisioning (636ec30)
- fixed wordpress.org subversion commit command in Makefile (c098eb9)
- improved Makefile (0bafa03)
- Makefile target “deploy-to-wordpress” – SNV_* parameter provisioning (0a9db88)
- Makefile target “deploy-to-wordpress” – fixed SVN_* variable provisioning (4c7d229)
- Makefile target “deploy-to-wordpress” – fixed typo in svn commit message (e5edf8b)
- fixed installation of convert in github action dependencies (52e319c)
- fixed installation of github action dependencies (b4a7072)
- impex for php 7.4 infrastructure added (60d9ee5)
- implex plugin for php 7.4 will be generated (af7a393)
- improved github action semantic-release (feeeb53)
- added missing “Tested up to” metdata to plugin.php and readme.txt template (270355e)
- “Merge main back into develop” task of github release action fixed (e2e4632)
- github release action fixed (f26da00)
- fixed typo for impex plugin field “Description” (4e674f3)
- initial release (69a74a7)
- added missing package-lock.json (bf5b9d5)