{"id":379285,"date":"2026-10-01T16:40:19","date_gmt":"2026-10-01T16:40:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/stalza-backup\/"},"modified":"2026-10-02T07:17:28","modified_gmt":"2026-10-02T07:17:28","slug":"stalza-backup","status":"publish","type":"plugin","link":"https:\/\/rhg.wordpress.org\/plugins\/stalza-backup\/","author":20735312,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.6","stable_tag":"1.0.6","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Stalza Backup","header_author":"Stalza","header_description":"Lightweight, resource-aware, verifiable WordPress backup and recovery.","assets_banners_color":"bec7d2","last_updated":"2026-10-02 07:17:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/stalza.com\/stalza-backup","header_author_uri":"https:\/\/stalza.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":86,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.4":{"tag":"1.0.4","author":"fuadkm","date":"2026-10-01 16:39:50","revision":3723497},"1.0.5":{"tag":"1.0.5","author":"fuadkm","date":"2026-10-01 16:46:34","revision":3723508},"1.0.6":{"tag":"1.0.6","author":"fuadkm","date":"2026-10-02 07:17:28","revision":3724274}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3723497,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3723497,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3723497,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3723497,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.4","1.0.5","1.0.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3723497,"resolution":"1","location":"assets","locale":"","width":1234,"height":882},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3723497,"resolution":"2","location":"assets","locale":"","width":1234,"height":700},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3723497,"resolution":"3","location":"assets","locale":"","width":1234,"height":700},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3723497,"resolution":"4","location":"assets","locale":"","width":1234,"height":700},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3723497,"resolution":"5","location":"assets","locale":"","width":1234,"height":700}},"screenshots":{"1":"Overview \u2014 protection status, stats, Backup Now, and recent backups","2":"Backup history \u2014 download, verify, restore, and delete","3":"Restore \u2014 restore from a verified backup with safety snapshot","4":"Schedules \u2014 daily\/weekly schedule, retention, and exclusions","5":"Storage \u2014 local storage path and disk usage"}},"plugin_section":[],"plugin_tags":[151,13383,152,4062,712],"plugin_category":[40,59],"plugin_contributors":[283307],"plugin_business_model":[],"class_list":["post-379285","plugin","type-plugin","status-publish","hentry","plugin_tags-backup","plugin_tags-recovery","plugin_tags-restore","plugin_tags-schedule","plugin_tags-verification","plugin_category-calendar-and-events","plugin_category-utilities-and-tools","plugin_contributors-fuadkm","plugin_committers-fuadkm"],"banners":{"banner":"https:\/\/ps.w.org\/stalza-backup\/assets\/banner-772x250.png?rev=3723497","banner_2x":"https:\/\/ps.w.org\/stalza-backup\/assets\/banner-1544x500.jpg?rev=3723497","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/stalza-backup\/assets\/icon-128x128.png?rev=3723497","icon_2x":"https:\/\/ps.w.org\/stalza-backup\/assets\/icon-256x256.png?rev=3723497","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/stalza-backup\/assets\/screenshot-1.png?rev=3723497","caption":"Overview \u2014 protection status, stats, Backup Now, and recent backups"},{"src":"https:\/\/ps.w.org\/stalza-backup\/assets\/screenshot-2.png?rev=3723497","caption":"Backup history \u2014 download, verify, restore, and delete"},{"src":"https:\/\/ps.w.org\/stalza-backup\/assets\/screenshot-3.png?rev=3723497","caption":"Restore \u2014 restore from a verified backup with safety snapshot"},{"src":"https:\/\/ps.w.org\/stalza-backup\/assets\/screenshot-4.png?rev=3723497","caption":"Schedules \u2014 daily\/weekly schedule, retention, and exclusions"},{"src":"https:\/\/ps.w.org\/stalza-backup\/assets\/screenshot-5.png?rev=3723497","caption":"Storage \u2014 local storage path and disk usage"}],"raw_content":"<!--section=description-->\n<p>Stalza Backup protects your WordPress site with chunked, resumable backups, integrity verification, and safe restore \u2014 without unnecessarily overloading your server.<\/p>\n\n<p><strong>Free includes<\/strong><\/p>\n\n<ul>\n<li>Manual backups: full, database, files, or media<\/li>\n<li>Daily \/ weekly schedules with retention and exclusions<\/li>\n<li>Local protected storage + download<\/li>\n<li>Verification and backup manifests<\/li>\n<li>Restore with pre-restore safety snapshot<\/li>\n<li>WP-CLI for backup, restore, schedule, and jobs<\/li>\n<\/ul>\n\n<p><strong>Core principles<\/strong><\/p>\n\n<ul>\n<li>A backup is not successful until verified<\/li>\n<li>Restore is as important as backup<\/li>\n<li>Local backup works without an external account<\/li>\n<li>Free version is genuinely useful<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>stalza-backup<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins menu<\/li>\n<li>Open <strong>Stalza Backup<\/strong> in the admin menu<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20free%20require%20a%20cloud%20account%3F\"><h3>Does Free require a cloud account?<\/h3><\/dt>\n<dd><p>No. Local storage and download work without any external account.<\/p><\/dd>\n<dt id=\"is%20verification%20free%3F\"><h3>Is verification Free?<\/h3><\/dt>\n<dd><p>Yes. Verification and backup manifests are core Free features.<\/p><\/dd>\n<dt id=\"how%20do%20scheduled%20backups%20run%3F\"><h3>How do scheduled backups run?<\/h3><\/dt>\n<dd><p>Through WordPress cron (<code>stalza_backup_cron_run<\/code>). On hosts where WP-Cron is unreliable, trigger it with a real system cron calling <code>wp cron event run<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.6<\/h4>\n\n<p>Bug Fixes:<\/p>\n\n<ul>\n<li>Stop writing <code>$wpdb-&gt;prepare()<\/code> <code>%<\/code> placeholder hashes into SQL dumps (Elementor <code>settings=\"%7B%7D\"<\/code> \/ site-logo fatals).<\/li>\n<li>Exclusive job lock so admin ticks and WP-Cron cannot double-append <code>filelist.txt<\/code>.<\/li>\n<li>Heal prepare-placeholder corruption on restore and rewrite absolute URLs in uploads CSS (Elementor google-fonts CORS).<\/li>\n<li>Remap option\/usermeta keys and unknown collations when restoring custom table prefixes.<\/li>\n<li>Stream large zip downloads with Range support; clear Plugin Check ERROR\/WARNING findings.<\/li>\n<\/ul>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Stronger site-to-site restore: prefix rewrite, serialize-safe URL remap, JSON-escaped URL pairs, and uploads text-file remaps.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<p>Bug Fixes:<\/p>\n\n<ul>\n<li>Set WordPress.org Contributors to valid username <code>fuadkm<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Site-to-site restore: automatic table-prefix rewrite and serialize-safe URL remapping when source and destination differ.<\/li>\n<li>Restore-completed modal with Go to login (sessions are usually reset after DB restore).<\/li>\n<\/ul>\n\n<p>Bug Fixes:<\/p>\n\n<ul>\n<li>Dump pagination uses <code>ORDER BY<\/code> primary\/unique key so large tables do not emit duplicate PKs.<\/li>\n<li>Persist SQL restore offset mid-tick and rewrite <code>INSERT<\/code> to <code>REPLACE<\/code> so resume cannot fail on Duplicate entry.<\/li>\n<li>Restore ticks survive session wipe via tick token (omit stale REST nonce; clear cookie check when token present).<\/li>\n<li>Harden staging cleanup and prune missing <code>active_plugins<\/code> after restore so incomplete plugin copies cannot fatal the site.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Import a Stalza backup zip from cloud or another site (Restore \u2192 Upload backup modal); verified before restore is offered.<\/li>\n<li>Richer backup progress UI: live scan activity, elapsed time, rotating hints, and clearer phase titles.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<p>Performance:<\/p>\n\n<ul>\n<li>Scan phase uses a DFS stack cursor and prunes excluded directories (no O(N\u00b2) path re-walk). Mid-upgrade jobs still mid-scan with legacy <code>resume<\/code> restart that scan cleanly.<\/li>\n<li>Admin REST ticks process up to 500 items \/ 20s (was 100 \/ 15s); cron job ticks match. Scan phase ignores the item cap and runs under time\/memory only so listing finishes in one tick on typical sites.<\/li>\n<li>Zip STORE for already-compressed media; light DEFLATE for text \u2014 less CPU, same zip format.<\/li>\n<li>Archive seeks <code>filelist.txt<\/code> by byte offset (no full reload each tick); scan batch-appends the list.<\/li>\n<li>Admin UI re-ticks ~every 50ms while a job runs (was 1.2s idle gap).<\/li>\n<\/ul>\n\n<p>Bug Fixes:<\/p>\n\n<ul>\n<li>Scan progress no longer shows a fake ~99% (<code>N\/(N+1)<\/code>); UI shows files found with an indeterminate bar until archive\/dump has a real total.<\/li>\n<\/ul>\n\n<p>Full history: https:\/\/stalza.com\/docs\/stalza-backup\/changelog<\/p>","raw_excerpt":"Lightweight, resource-aware, verifiable WordPress backup and recovery.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/379285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=379285"}],"author":[{"embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/fuadkm"}],"wp:attachment":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=379285"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=379285"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=379285"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=379285"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=379285"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=379285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}