One-Click Demo Import for WordPress Themes

Quick Demo Importer - one click demo import

Quick Demo Importer - one click demo import

Quick Demo Importer Run one click demo import for themes, plugins, media, and content in WordPress.

Download 1.0.0

0.07MB • PHP 8.0+ • WP 6.0+

Quick Demo Importer is made for people who want a finished-looking sample site without repeating the same manual setup on every install. After activation, you open a dedicated tools screen, pick a demo profile, and start a guided run. The plugin can install a theme, add required plugins, place images in the Media Library, import WordPress XML content through the official WordPress Importer, and apply common site settings such as the front page, menus, site icon, and logo. Progress is shown step by step in the admin interface, so you always know what is running and where the process stopped if something needs attention. You can use the bundled starters or add your own profile with JSON when you want a reusable setup for your team or product.

  • Simple admin screen for complete one click demo import runs
  • Install themes and plugins from wordpress.org or a ZIP URL
  • Import sample media and WXR content in the same workflow
  • Apply front page, menus, branding, and related options after content lands
  • Add custom demo profiles from JSON and reuse them later

Use Cases

  • Theme buyers setting up a sample site
    Someone installs a new theme and wants the demo layout quickly. With one click demo import, sample pages, supporting plugins, and basic site settings can be applied from one place instead of several disconnected tools.
  • Agencies creating a standard starting point
    Teams that launch many similar sites can keep a shared profile for the base theme, common plugins, and starter content. Each new project begins from the same known baseline.
  • Product authors packaging onboarding
    Theme and plugin authors can ship demo profiles that show real content and recommended add-ons. Users reach a meaningful preview faster, which reduces setup friction and support questions.
  • Staging checks before production
    Developers can run an import on staging to verify exports, media, and reading settings. Issues are caught in a safe environment before any production cutover.
  • Training and internal demos
    Educators and internal teams can rebuild a known sample site for workshops or QA. A repeatable import is more reliable than restoring full site backups for every session.

Key Features

  • Clear step-by-step import flow
    Each demo runs as an ordered sequence. The interface updates as stages complete, which makes long imports easier to supervise and easier to understand when a stage needs a fix before the rest continues.
  • Theme installation built into the demo
    Profiles can install a theme from the WordPress.org directory or from a remote ZIP package. You can also choose whether the theme should become active immediately or remain installed only.
  • Plugin installation with activation control
    Required plugins can be added during the same run. This is useful for demos that depend on forms, commerce, or editor tools, and it supports leaving a package inactive when activation is not desired yet.
  • Local media seeding
    Demo images stored with a profile can be brought into the Media Library first. That helps site icon, logo, and other image-based settings resolve cleanly after the rest of the content is imported.
  • Official WXR content import
    Pages, posts, and related export data are handled through the official WordPress Importer. The plugin focuses on orchestration so content loading stays aligned with standard WordPress export files.
  • Post-import site configuration
    After content is available, the importer can set reading options, assign menus, apply theme mods, and update selected options. Permalink structure can be refreshed as part of that finishing stage.
  • Custom profile support
    When a bundled starter is not enough, you can provide a profile as JSON. Custom profiles are stored on the site and can be selected later like any other demo entry.
  • Safer failure handling
    If one stage fails, later stages do not continue blindly. That keeps partial imports easier to diagnose and reduces the chance of mixed or confusing end states.

How to Use Quick Demo Importer

  1. Install and activate the plugin

    Upload Quick Demo Importer to your WordPress site and activate it. Then open Tools → Demo Importer to reach the main screen.

  2. Make sure WordPress Importer is ready

    Content import depends on the official WordPress Importer. If it is missing, use the on-screen action to install and activate it before you start a full demo run.

  3. Choose a bundled demo or add a custom profile

    Select one of the included starters, or import a profile JSON if you already prepared your own sequence. Review the listed steps so you know which packages and content will be applied.

  4. Start the import and wait for each stage

    Begin the run and keep the browser tab open while stages complete. Success and error messages appear per step so you can see exactly what finished.

  5. Review the site and adjust branding

    After a successful import, check the front page, menus, and sample content. Replace demo text and images with your own brand assets as needed.

Usage Guide

Quick Demo Importer runs one click demo import from Tools → Demo Importer. You need the manage_options capability. Each demo is a profile: a folder with a required config.json that defines an ordered pipeline of steps. Steps run one by one over AJAX. If a step fails, later steps do not run.

Profile locations

  • Bundled: wp-content/plugins/quick-demo-importer/demos/{slug}/
  • Custom: wp-content/uploads/quick-demo-importer/profiles/{slug}/

When the same slug exists in both places, the custom profile is used first.

Typical files inside a profile folder:

{slug}/
  config.json     # required
  content.xml     # optional WXR export
  images/         # optional local media
  tasks.php       # optional PHP tasks

config.json root fields

  • name (required) — display title
  • description (optional) — short summary
  • pipeline (required) — non-empty array of step objects

Unknown step types are skipped while parsing. If nothing valid remains, the profile is rejected.

Minimal example:

{
  "name": "My Demo",
  "description": "Theme only",
  "pipeline": [
    { "step": "install_theme", "slug": "twentytwentyfour" }
  ]
}

Pipeline steps for one click demo import

Every item needs "step": "<type>" plus type-specific fields. Array order is execution order. Use this structure when you want reliable WordPress demo import that installs packages, media, and content in one flow.

1. install_theme

Installs a theme. Activation defaults to on.

  • slug — theme stylesheet / wordpress.org slug
  • zip_url — HTTPS ZIP URL (optional alternative or complement to slug)
  • activate — default true; set false to install only

Provide at least slug or zip_url.

{ "step": "install_theme", "slug": "twentytwentythree" }

{
  "step": "install_theme",
  "slug": "my-theme",
  "zip_url": "https://example.com/my-theme.zip",
  "activate": true
}
  • Already installed + activate: true → switches theme when needed
  • Already installed + activate: false → left as-is (not force-deactivated)

2. install_plugin

Installs a plugin. Activation defaults to on.

  • slug — plugin folder / wordpress.org slug
  • zip_url — HTTPS ZIP URL
  • activate — default true; set false to install only
{ "step": "install_plugin", "slug": "classic-editor" }

{
  "step": "install_plugin",
  "slug": "hello-dolly",
  "activate": false
}

{
  "step": "install_plugin",
  "slug": "debug-bar",
  "zip_url": "https://downloads.wordpress.org/plugin/debug-bar.latest-stable.zip"
}

When zip_url is set, that archive is used and the wordpress.org API is skipped. Keep slug aligned with the installed folder name so activation can resolve the plugin file.

3. import_media

Imports image files from a profile subdirectory into the Media Library.

  • directory — default "images"

Allowed extensions: jpg, jpeg, png, gif, webp, ico.

{ "step": "import_media", "directory": "images" }
  • Attachment post_name = sanitized file name without extension
  • Existing slug → skipped (safe to re-run)
  • Reuse those slugs later in site_icon, custom_logo, or theme_mods_attachments

4. import_content

Imports WXR/XML through the official WordPress Importer (WP_Import). This is the standard path for WordPress XML import and exported demo content.

  • content_url — remote HTTPS WXR URL (used when non-empty)
  • content_file — relative file under the profile (default content.xml)
  • fetch_attachments — default true
  • rewrite_urls — default true
{
  "step": "import_content",
  "content_file": "content.xml",
  "fetch_attachments": true,
  "rewrite_urls": true
}

{
  "step": "import_content",
  "content_url": "https://example.com/exports/demo.xml",
  "fetch_attachments": true,
  "rewrite_urls": true
}

WordPress Importer must be active. The Demo Importer screen can install it when needed.

5. apply_setup

Applies generic site configuration. Put demo-specific logic in run_task instead.

Reading / front page

  • show_on_front — page or posts
  • page_on_front / page_for_posts — page slug or title

Branding

  • site_icon — attachment slug
  • custom_logo — attachment slug

Menus

  • menus — object map: { "location_slug": "Menu Name" }

Theme mods

  • theme_mods — scalar values
  • theme_mods_attachments — theme mod key → attachment slug → stored as URL

Options

  • options — WordPress options object (scalars)
  • permalink_structure inside options updates structure and flushes rewrite rules
{
  "step": "apply_setup",
  "show_on_front": "page",
  "page_on_front": "welcome",
  "page_for_posts": "notes",
  "site_icon": "demo-three-icon",
  "custom_logo": "demo-three-logo",
  "menus": { "primary": "Main Menu" },
  "theme_mods": { "my_setting": "value" },
  "theme_mods_attachments": { "hero_image": "hero-banner" },
  "options": {
    "blogname": "Demo Site",
    "permalink_structure": "/%postname%/",
    "posts_per_page": 5
  }
}

6. run_task

Runs a method from the profile tasks.php class.

  • name (required) — method name
  • tasks_class (optional) — must start with QDIMP_Tasks_
{ "step": "run_task", "name": "setup_primary_menu" }

{
  "step": "run_task",
  "name": "pin_welcome_note",
  "tasks_class": "QDIMP_Tasks_demo_three"
}

Example class shape:

<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class QDIMP_Tasks_my_demo {
	public function my_method() {
		return 'Done.';
	}
}

Class resolution: step tasks_class → QDIMP_Tasks_{demo_slug} → first loaded QDIMP_Tasks_* class that has the method. Custom profiles imported in the UI strip all run_task steps for security.

Full pipeline example

{
  "name": "Starter Shop",
  "description": "Theme, WooCommerce, media, content, setup, menu task",
  "pipeline": [
    { "step": "install_theme", "slug": "twentytwentyfour" },
    { "step": "install_plugin", "slug": "woocommerce" },
    { "step": "import_media", "directory": "images" },
    {
      "step": "import_content",
      "content_file": "content.xml",
      "fetch_attachments": true,
      "rewrite_urls": true
    },
    {
      "step": "apply_setup",
      "show_on_front": "page",
      "page_on_front": "home",
      "page_for_posts": "blog",
      "site_icon": "site-icon",
      "options": {
        "blogname": "Starter Shop",
        "permalink_structure": "/%postname%/"
      }
    },
    { "step": "run_task", "name": "setup_primary_menu" }
  ]
}

Admin workflows

Run a bundled demo

  1. Open Tools → Demo Importer
  2. Ensure WordPress Importer is ready
  3. Select a demo, review steps, start import

Import a custom profile

  1. Paste full config.json or choose a local .json file (read in the browser)
  2. Import profile
  3. Select the new Custom entry and run it
  • JSON size limit about 512 KB
  • Only known step types are kept
  • run_task steps are removed on custom import
  • Profiles are stored under uploads and can be deleted in the UI

Practical tips

  • Order matters: install theme/plugins before dependent content; run import_media before apply_setup when you reference image slugs.
  • Re-runs: installed themes/plugins are not reinstalled blindly; existing media slugs are skipped; task methods should tolerate a second run.
  • Pretty permalinks: set permalink_structure under apply_setup → options so rewrite rules refresh (important on nginx).
  • Keep setup generic: one-off cleanup or menu rebuilds belong in tasks.php.
  • Omit empty keys: do not add "zip_url": ""; leave the field out when unused.

Errors and security

Each step returns a success message or an error. The UI shows the message and stops the pipeline. Common causes include a missing page slug in apply_setup, inactive WordPress Importer, invalid ZIP URL, missing images/ folder, or a missing task method.

  • Only administrators can run imports
  • Remote URLs must be valid http/https targets
  • Path traversal is blocked for content and media paths
  • Do not ship arbitrary PHP through custom profile import; use bundled tasks.php only for trusted demos

With a well-ordered profile, one click demo import becomes a repeatable way to deliver WordPress demo import results: packages, media, WXR content, and finishing site options in one controlled pass.

Technical Details

Version1.0.0
PHP8.0+
WordPress6.0+
DependenciesOfficial WordPress Importer for WXR/XML content steps
MethodAdmin AJAX pipeline that runs profile-defined stages in order
OutputInstalled packages, Media Library items, imported content, and updated site settings in wp-admin

FAQ

Who is Quick Demo Importer for?

It is for theme users, agencies, and product authors who want a practical way to load sample sites in WordPress without repeating manual setup every time.

Does this replace the WordPress Importer plugin?

No. WXR content still goes through the official WordPress Importer. Quick Demo Importer coordinates the wider process around it.

Can I install a plugin without activating it?

Yes. A profile step can install a package and leave it inactive when that is the intended behavior.

Can themes or plugins come from a ZIP link?

Yes. When a secure ZIP URL is provided, that package source is used instead of the wordpress.org download API.

What is a custom profile?

A custom profile is a JSON description of the import sequence. You can add it from the admin screen and run it like a bundled demo.

What happens if one step fails?

The process stops at the failed step and shows the error. Remaining steps are not executed until you resolve the issue and run again as needed.

Will this overwrite my whole existing site?

Imports add or update content according to the selected profile and WordPress import behavior. Always use a backup or staging site when you are unsure about the current content.

Changelog

  • 1.0.0 – 2026-10-07
    Initial release with staged demo runs, theme and plugin installation, media seeding, WXR content import, site setup helpers, custom profiles, and admin progress feedback.

Download Quick Demo Importer and start one click demo import from Tools → Demo Importer.

Download Now

Whether you are testing a theme or preparing a client baseline, one click demo import keeps the path from empty site to working sample clear and controlled.

One click demo import is often the difference between a blank dashboard and a site that already feels usable. Quick Demo Importer is built for that moment: it helps you load sample layouts, related plugins, media, and exported content through a single admin workflow that stays easy to follow.

Previous Post
No Comment
    Add Comment
    comment url