PANELKIND 1.7.2 · DOCUMENTATION · 5 NOVEMBER 2026

Backups, transfers and developer reference

Configuration backup versus portable transfer

DetailSame-site backup — both editionsPortable export/import — Pro
Formatpanelkind-backupwp-adminer retained for compatibility
PurposeRestore this installation's configurationTransfer configuration between installations
ScopePublished configuration, with user referencesConfiguration with personal identities removed
SignatureBound to site URL, blog ID and authentication saltNot a same-site signed backup
Individual View/access assignmentsRetainedRemoved
Individual widget/page audience IDsRetainedRemoved; user-only selected audiences become owners-only rather than public/all-users
Owner/delegate identitiesPresent in backup data; current destination settings retained during restoreRemoved from export; destination settings retained
Native roles, users, media and contentNot backed up as site dataNot migrated
Import actionValidate and preview; then save/review/publishValidate and preview; then save/review/publish

Keep same-site backups private because they contain user references. Editing the payload or changing site URL/authentication salts can invalidate signatures. Restores/imports preserve current settings, including owners, delegates and retention. Referenced native users/roles/content types must exist. For portable transfer, create matching native role IDs, check plugin destinations, replace site-specific links/logo/media URLs and recreate any desired individual assignments.

An export does not preserve unsaved edits or act as a full-site backup. Source-side exports use published/active configuration. Import preview is non-mutating; review before saving and publishing. Current entitlements apply, including to historical exports and revisions.

Implementation map

Component inside the installable ZIPResponsibility
wp-adminer.phpPlugin metadata, SDK initialisation, autoloading and hooks
includes/class-plugin.phpServices, activation and management capabilities
includes/class-defaults.phpNeutral Free seed, appearances and upgrade defaults
includes/class-schema.phpValidation, content/URL sanitisation, references and limits
includes/class-store.phpShared draft, snapshots, active revision, locking and audit
includes/class-policy.phpNative capability ceiling, assignment and policy precedence
includes/class-entitlements.phpFree caps, paid fields and downgrade-preserving validation
includes/class-license.phpInstallation-specific SDK entitlement and updates
includes/class-roles.phpLinked native-role management and synchronisation
includes/class-registry.php, class-enforcement.phpResource discovery, capability/REST mappings and guards
includes/class-navigation.php, class-sections.phpMenus, section context and contextual dashboards
includes/class-content.phpPrivate guides, widgets, summaries and checklist rendering
includes/class-appearance.php, class-themes.phpValidated admin styling and twelve-palette catalogue
includes/class-preview.phpRequest identity, sessions, write blocking and auto-draft cleanup
includes/class-backup.php, class-api.phpSigned backups and authorised management routes
includes/class-uninstall.phpFreemius after-uninstall cleanup
assets/admin.js, client.js, preview.jsManagement UI, client interactions and preview controls
vendor/freemius/Bundled SDK, including its own license

Configuration uses non-autoloaded snapshots with an active-version pointer rather than public custom post types. Checklist state uses site-scoped user metadata or options. Configuration activity uses a dedicated audit table. Native role definitions are stored outside revisions. Installed PHP/CSS/JS load directly, with no frontend build dependency.

API and extension points

The namespace remains wp-adminer/v1. Authenticated, authorised routes include state/license, native-role listing/mutations, draft save, publish/discard/restore, backup/export/import preview, user search, preview start/access inspection, owner recovery and checklist completion. API writes retain role/area checks and entitlement validation; the checklist route also verifies item access. There is no API for arbitrarily granting a paid tier.

Management capabilities are wpa_manage_views, wpa_manage_access, wpa_manage_content, wpa_manage_settings, wpa_publish and wpa_export. A delegate's permitted area is not a blanket owner grant.

Use normal WordPress menu registration so pages can be discovered. Integration hooks are:

  • wpa_resources: resource descriptions, native capability and screen/actions coverage.
  • wpa_capability_resource: map custom requested capabilities to resources.
  • wpa_rest_resource: map REST requests to resources.
  • wpa_section_dashboard_before / wpa_section_dashboard_after: authorised server-rendered section dashboard content, receiving section ID, View and user.

An adapter must check every relevant operation before advertising action coverage; REST mapping does not automatically protect AJAX/admin-post/XML-RPC endpoints. Escape rendered content, check additional capabilities and avoid side effects in render callbacks because preview invokes them too.

Development handoff

The repository uses a pinned project-local Node 24 runtime and WordPress Playground for PHP/SQLite execution. Commands in a full development checkout are npm install, npm run dev, npm run check, npm test, npm run test:themes and npm run package. Tests and development dependencies are not installed by the included plugin ZIP. WPA_DEMO=0 selects a clean Free development setup instead of the disposable Pro demo fixture.

Packaging uses an explicit production allowlist. Do not add a root uninstall.php; cleanup is registered through the Freemius after_uninstall hook. The plugin is GPL-2.0-or-later; the SDK has its own included license. See source evidence for the files used to verify this handoff.

Back to documentation