Changeset 3460903
- Timestamp:
- 02/13/2026 04:23:41 PM (8 days ago)
- Location:
- post-export-import-with-media
- Files:
-
- 285 added
- 12 edited
-
tags/1.3.0 (added)
-
tags/1.3.0/assets (added)
-
tags/1.3.0/assets/css (added)
-
tags/1.3.0/assets/css/admin.css (added)
-
tags/1.3.0/assets/css/recommendations.css (added)
-
tags/1.3.0/assets/css/scheduled-exports.css (added)
-
tags/1.3.0/assets/js (added)
-
tags/1.3.0/assets/js/admin-batch-optimized.js (added)
-
tags/1.3.0/assets/js/admin-batch.js (added)
-
tags/1.3.0/assets/js/admin-clean.js (added)
-
tags/1.3.0/assets/js/admin-download-buttons.js (added)
-
tags/1.3.0/assets/js/admin.js (added)
-
tags/1.3.0/assets/js/batch-settings.js (added)
-
tags/1.3.0/assets/js/pages.js (added)
-
tags/1.3.0/assets/js/recommendations.js (added)
-
tags/1.3.0/assets/js/scheduled-exports.js (added)
-
tags/1.3.0/assets/js/settings.js (added)
-
tags/1.3.0/assets/js/themes-plugins.js (added)
-
tags/1.3.0/freemius (added)
-
tags/1.3.0/freemius/LICENSE.txt (added)
-
tags/1.3.0/freemius/README.md (added)
-
tags/1.3.0/freemius/assets (added)
-
tags/1.3.0/freemius/assets/css (added)
-
tags/1.3.0/freemius/assets/css/admin (added)
-
tags/1.3.0/freemius/assets/css/admin/account.css (added)
-
tags/1.3.0/freemius/assets/css/admin/add-ons.css (added)
-
tags/1.3.0/freemius/assets/css/admin/affiliation.css (added)
-
tags/1.3.0/freemius/assets/css/admin/checkout.css (added)
-
tags/1.3.0/freemius/assets/css/admin/clone-resolution.css (added)
-
tags/1.3.0/freemius/assets/css/admin/common.css (added)
-
tags/1.3.0/freemius/assets/css/admin/connect.css (added)
-
tags/1.3.0/freemius/assets/css/admin/debug.css (added)
-
tags/1.3.0/freemius/assets/css/admin/dialog-boxes.css (added)
-
tags/1.3.0/freemius/assets/css/admin/gdpr-optin-notice.css (added)
-
tags/1.3.0/freemius/assets/css/admin/index.php (added)
-
tags/1.3.0/freemius/assets/css/admin/optout.css (added)
-
tags/1.3.0/freemius/assets/css/admin/plugins.css (added)
-
tags/1.3.0/freemius/assets/css/customizer.css (added)
-
tags/1.3.0/freemius/assets/css/index.php (added)
-
tags/1.3.0/freemius/assets/img (added)
-
tags/1.3.0/freemius/assets/img/all-in-one-video-gallery.png (added)
-
tags/1.3.0/freemius/assets/img/easy-error-log.png (added)
-
tags/1.3.0/freemius/assets/img/index.php (added)
-
tags/1.3.0/freemius/assets/img/notifier-to-slack-pro.png (added)
-
tags/1.3.0/freemius/assets/img/notifier-to-slack.png (added)
-
tags/1.3.0/freemius/assets/img/plugin-icon.png (added)
-
tags/1.3.0/freemius/assets/img/post-export-import-with-media.png (added)
-
tags/1.3.0/freemius/assets/img/simple-form.gif (added)
-
tags/1.3.0/freemius/assets/img/theme-icon.png (added)
-
tags/1.3.0/freemius/assets/img/wc-bulk-order-generator.svg (added)
-
tags/1.3.0/freemius/assets/index.php (added)
-
tags/1.3.0/freemius/assets/js (added)
-
tags/1.3.0/freemius/assets/js/index.php (added)
-
tags/1.3.0/freemius/assets/js/jquery.form.js (added)
-
tags/1.3.0/freemius/assets/js/nojquery.ba-postmessage.js (added)
-
tags/1.3.0/freemius/assets/js/postmessage.js (added)
-
tags/1.3.0/freemius/assets/js/pricing (added)
-
tags/1.3.0/freemius/assets/js/pricing/14fb1bd5b7c41648488b06147f50a0dc.svg (added)
-
tags/1.3.0/freemius/assets/js/pricing/178afa6030e76635dbe835e111d2c507.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/27b5a722a5553d9de0170325267fccec.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/4375c4a3ddc6f637c2ab9a2d7220f91e.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/4529cac82a2d1f300d3c4702b7b5e8f3.svg (added)
-
tags/1.3.0/freemius/assets/js/pricing/45da596e2b512ffc3bb638baaf0fdc4e.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/5480ed23b199531a8cbc05924f26952b.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/a34e046aee1702a5690679750a7f4d0f.svg (added)
-
tags/1.3.0/freemius/assets/js/pricing/b09d0b38b627c2fa564d050f79f2f064.svg (added)
-
tags/1.3.0/freemius/assets/js/pricing/b4f3b958f4a019862d81b15f3f8eee3a.svg (added)
-
tags/1.3.0/freemius/assets/js/pricing/c03f665db27af43971565560adfba594.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/cb5fc4f6ec7ada72e986f6e7dde365bf.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/d65812c447b4523b42d59018e1c0bb53.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/dd89563360f0272635c8f0ab7d7f1402.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/e366d70661d8ad2493bd6afbd779f125.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/f18006f6535a1a6e9c6bfbffafe6f18a.svg (added)
-
tags/1.3.0/freemius/assets/js/pricing/f3aac72a8e63997d6bb888f816457e9b.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/f928f1be99776af83e8e6be4baf8ffe7.svg (added)
-
tags/1.3.0/freemius/assets/js/pricing/fde48e4609a6ddc11d639fc2421f2afd.png (added)
-
tags/1.3.0/freemius/assets/js/pricing/freemius-pricing.js (added)
-
tags/1.3.0/freemius/assets/js/pricing/freemius-pricing.js.LICENSE.txt (added)
-
tags/1.3.0/freemius/composer.json (added)
-
tags/1.3.0/freemius/config.php (added)
-
tags/1.3.0/freemius/includes (added)
-
tags/1.3.0/freemius/includes/class-freemius-abstract.php (added)
-
tags/1.3.0/freemius/includes/class-freemius.php (added)
-
tags/1.3.0/freemius/includes/class-fs-admin-notices.php (added)
-
tags/1.3.0/freemius/includes/class-fs-api.php (added)
-
tags/1.3.0/freemius/includes/class-fs-garbage-collector.php (added)
-
tags/1.3.0/freemius/includes/class-fs-hook-snapshot.php (added)
-
tags/1.3.0/freemius/includes/class-fs-lock.php (added)
-
tags/1.3.0/freemius/includes/class-fs-logger.php (added)
-
tags/1.3.0/freemius/includes/class-fs-options.php (added)
-
tags/1.3.0/freemius/includes/class-fs-plugin-updater.php (added)
-
tags/1.3.0/freemius/includes/class-fs-security.php (added)
-
tags/1.3.0/freemius/includes/class-fs-storage.php (added)
-
tags/1.3.0/freemius/includes/class-fs-user-lock.php (added)
-
tags/1.3.0/freemius/includes/customizer (added)
-
tags/1.3.0/freemius/includes/customizer/class-fs-customizer-support-section.php (added)
-
tags/1.3.0/freemius/includes/customizer/class-fs-customizer-upsell-control.php (added)
-
tags/1.3.0/freemius/includes/customizer/index.php (added)
-
tags/1.3.0/freemius/includes/debug (added)
-
tags/1.3.0/freemius/includes/debug/class-fs-debug-bar-panel.php (added)
-
tags/1.3.0/freemius/includes/debug/debug-bar-start.php (added)
-
tags/1.3.0/freemius/includes/debug/index.php (added)
-
tags/1.3.0/freemius/includes/entities (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-affiliate-terms.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-affiliate.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-billing.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-entity.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-payment.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-plugin-info.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-plugin-license.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-plugin-plan.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-plugin-tag.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-plugin.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-pricing.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-scope-entity.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-site.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-subscription.php (added)
-
tags/1.3.0/freemius/includes/entities/class-fs-user.php (added)
-
tags/1.3.0/freemius/includes/entities/index.php (added)
-
tags/1.3.0/freemius/includes/fs-core-functions.php (added)
-
tags/1.3.0/freemius/includes/fs-essential-functions.php (added)
-
tags/1.3.0/freemius/includes/fs-html-escaping-functions.php (added)
-
tags/1.3.0/freemius/includes/fs-plugin-info-dialog.php (added)
-
tags/1.3.0/freemius/includes/index.php (added)
-
tags/1.3.0/freemius/includes/l10n.php (added)
-
tags/1.3.0/freemius/includes/managers (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-admin-menu-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-admin-notice-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-cache-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-checkout-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-clone-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-contact-form-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-debug-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-gdpr-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-key-value-storage.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-license-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-option-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-permission-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-plan-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/class-fs-plugin-manager.php (added)
-
tags/1.3.0/freemius/includes/managers/index.php (added)
-
tags/1.3.0/freemius/includes/sdk (added)
-
tags/1.3.0/freemius/includes/sdk/Exceptions (added)
-
tags/1.3.0/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php (added)
-
tags/1.3.0/freemius/includes/sdk/Exceptions/EmptyArgumentException.php (added)
-
tags/1.3.0/freemius/includes/sdk/Exceptions/Exception.php (added)
-
tags/1.3.0/freemius/includes/sdk/Exceptions/InvalidArgumentException.php (added)
-
tags/1.3.0/freemius/includes/sdk/Exceptions/OAuthException.php (added)
-
tags/1.3.0/freemius/includes/sdk/Exceptions/index.php (added)
-
tags/1.3.0/freemius/includes/sdk/FreemiusBase.php (added)
-
tags/1.3.0/freemius/includes/sdk/FreemiusWordPress.php (added)
-
tags/1.3.0/freemius/includes/sdk/LICENSE.txt (added)
-
tags/1.3.0/freemius/includes/sdk/index.php (added)
-
tags/1.3.0/freemius/includes/supplements (added)
-
tags/1.3.0/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php (added)
-
tags/1.3.0/freemius/includes/supplements/fs-essential-functions-2.2.1.php (added)
-
tags/1.3.0/freemius/includes/supplements/fs-migration-2.5.1.php (added)
-
tags/1.3.0/freemius/includes/supplements/index.php (added)
-
tags/1.3.0/freemius/index.php (added)
-
tags/1.3.0/freemius/languages (added)
-
tags/1.3.0/freemius/languages/freemius-cs_CZ.mo (added)
-
tags/1.3.0/freemius/languages/freemius-da_DK.mo (added)
-
tags/1.3.0/freemius/languages/freemius-de_DE.mo (added)
-
tags/1.3.0/freemius/languages/freemius-es_ES.mo (added)
-
tags/1.3.0/freemius/languages/freemius-fr_FR.mo (added)
-
tags/1.3.0/freemius/languages/freemius-he_IL.mo (added)
-
tags/1.3.0/freemius/languages/freemius-hu_HU.mo (added)
-
tags/1.3.0/freemius/languages/freemius-it_IT.mo (added)
-
tags/1.3.0/freemius/languages/freemius-ja.mo (added)
-
tags/1.3.0/freemius/languages/freemius-nl_NL.mo (added)
-
tags/1.3.0/freemius/languages/freemius-ru_RU.mo (added)
-
tags/1.3.0/freemius/languages/freemius-ta.mo (added)
-
tags/1.3.0/freemius/languages/freemius-zh_CN.mo (added)
-
tags/1.3.0/freemius/languages/freemius.pot (added)
-
tags/1.3.0/freemius/languages/index.php (added)
-
tags/1.3.0/freemius/require.php (added)
-
tags/1.3.0/freemius/start.php (added)
-
tags/1.3.0/freemius/templates (added)
-
tags/1.3.0/freemius/templates/account (added)
-
tags/1.3.0/freemius/templates/account.php (added)
-
tags/1.3.0/freemius/templates/account/billing.php (added)
-
tags/1.3.0/freemius/templates/account/index.php (added)
-
tags/1.3.0/freemius/templates/account/partials (added)
-
tags/1.3.0/freemius/templates/account/partials/activate-license-button.php (added)
-
tags/1.3.0/freemius/templates/account/partials/addon.php (added)
-
tags/1.3.0/freemius/templates/account/partials/deactivate-license-button.php (added)
-
tags/1.3.0/freemius/templates/account/partials/disconnect-button.php (added)
-
tags/1.3.0/freemius/templates/account/partials/index.php (added)
-
tags/1.3.0/freemius/templates/account/partials/site.php (added)
-
tags/1.3.0/freemius/templates/account/payments.php (added)
-
tags/1.3.0/freemius/templates/add-ons.php (added)
-
tags/1.3.0/freemius/templates/add-trial-to-pricing.php (added)
-
tags/1.3.0/freemius/templates/admin-notice.php (added)
-
tags/1.3.0/freemius/templates/ajax-loader.php (added)
-
tags/1.3.0/freemius/templates/api-connectivity-message-js.php (added)
-
tags/1.3.0/freemius/templates/auto-installation.php (added)
-
tags/1.3.0/freemius/templates/checkout (added)
-
tags/1.3.0/freemius/templates/checkout.php (added)
-
tags/1.3.0/freemius/templates/checkout/frame.php (added)
-
tags/1.3.0/freemius/templates/checkout/process-redirect.php (added)
-
tags/1.3.0/freemius/templates/checkout/redirect.php (added)
-
tags/1.3.0/freemius/templates/clone-resolution-js.php (added)
-
tags/1.3.0/freemius/templates/connect (added)
-
tags/1.3.0/freemius/templates/connect.php (added)
-
tags/1.3.0/freemius/templates/connect/index.php (added)
-
tags/1.3.0/freemius/templates/connect/permission.php (added)
-
tags/1.3.0/freemius/templates/connect/permissions-group.php (added)
-
tags/1.3.0/freemius/templates/contact.php (added)
-
tags/1.3.0/freemius/templates/debug (added)
-
tags/1.3.0/freemius/templates/debug.php (added)
-
tags/1.3.0/freemius/templates/debug/api-calls.php (added)
-
tags/1.3.0/freemius/templates/debug/index.php (added)
-
tags/1.3.0/freemius/templates/debug/logger.php (added)
-
tags/1.3.0/freemius/templates/debug/plugins-themes-sync.php (added)
-
tags/1.3.0/freemius/templates/debug/scheduled-crons.php (added)
-
tags/1.3.0/freemius/templates/email.php (added)
-
tags/1.3.0/freemius/templates/forms (added)
-
tags/1.3.0/freemius/templates/forms/affiliation.php (added)
-
tags/1.3.0/freemius/templates/forms/data-debug-mode.php (added)
-
tags/1.3.0/freemius/templates/forms/deactivation (added)
-
tags/1.3.0/freemius/templates/forms/deactivation/contact.php (added)
-
tags/1.3.0/freemius/templates/forms/deactivation/form.php (added)
-
tags/1.3.0/freemius/templates/forms/deactivation/index.php (added)
-
tags/1.3.0/freemius/templates/forms/deactivation/retry-skip.php (added)
-
tags/1.3.0/freemius/templates/forms/email-address-update.php (added)
-
tags/1.3.0/freemius/templates/forms/index.php (added)
-
tags/1.3.0/freemius/templates/forms/license-activation.php (added)
-
tags/1.3.0/freemius/templates/forms/optout.php (added)
-
tags/1.3.0/freemius/templates/forms/premium-versions-upgrade-handler.php (added)
-
tags/1.3.0/freemius/templates/forms/premium-versions-upgrade-metadata.php (added)
-
tags/1.3.0/freemius/templates/forms/resend-key.php (added)
-
tags/1.3.0/freemius/templates/forms/subscription-cancellation.php (added)
-
tags/1.3.0/freemius/templates/forms/trial-start.php (added)
-
tags/1.3.0/freemius/templates/forms/user-change.php (added)
-
tags/1.3.0/freemius/templates/gdpr-optin-js.php (added)
-
tags/1.3.0/freemius/templates/index.php (added)
-
tags/1.3.0/freemius/templates/js (added)
-
tags/1.3.0/freemius/templates/js/index.php (added)
-
tags/1.3.0/freemius/templates/js/jquery.content-change.php (added)
-
tags/1.3.0/freemius/templates/js/open-license-activation.php (added)
-
tags/1.3.0/freemius/templates/js/permissions.php (added)
-
tags/1.3.0/freemius/templates/js/style-premium-theme.php (added)
-
tags/1.3.0/freemius/templates/partials (added)
-
tags/1.3.0/freemius/templates/partials/index.php (added)
-
tags/1.3.0/freemius/templates/partials/network-activation.php (added)
-
tags/1.3.0/freemius/templates/plugin-icon.php (added)
-
tags/1.3.0/freemius/templates/plugin-info (added)
-
tags/1.3.0/freemius/templates/plugin-info/description.php (added)
-
tags/1.3.0/freemius/templates/plugin-info/features.php (added)
-
tags/1.3.0/freemius/templates/plugin-info/index.php (added)
-
tags/1.3.0/freemius/templates/plugin-info/screenshots.php (added)
-
tags/1.3.0/freemius/templates/pricing.php (added)
-
tags/1.3.0/freemius/templates/secure-https-header.php (added)
-
tags/1.3.0/freemius/templates/sticky-admin-notice-js.php (added)
-
tags/1.3.0/freemius/templates/tabs-capture-js.php (added)
-
tags/1.3.0/freemius/templates/tabs.php (added)
-
tags/1.3.0/includes (added)
-
tags/1.3.0/includes/class-admin-download-buttons.php (added)
-
tags/1.3.0/includes/class-admin-menu.php (added)
-
tags/1.3.0/includes/class-ajax-handler.php (added)
-
tags/1.3.0/includes/class-batch-processor.php (added)
-
tags/1.3.0/includes/class-batch-settings.php (added)
-
tags/1.3.0/includes/class-generic-recommendations.php (added)
-
tags/1.3.0/includes/class-heartbeat-handler.php (added)
-
tags/1.3.0/includes/class-main.php (added)
-
tags/1.3.0/includes/class-media-handler.php (added)
-
tags/1.3.0/includes/class-page-handler.php (added)
-
tags/1.3.0/includes/class-post-handler.php (added)
-
tags/1.3.0/includes/class-scheduled-exports.php (added)
-
tags/1.3.0/includes/class-settings-handler.php (added)
-
tags/1.3.0/includes/class-themes-plugins-handler.php (added)
-
tags/1.3.0/includes/class-widgets-menus-handler.php (added)
-
tags/1.3.0/languages (added)
-
tags/1.3.0/languages/post-export-import-with-media.pot (added)
-
tags/1.3.0/post-export-import-with-media.php (added)
-
tags/1.3.0/readme.txt (added)
-
trunk/assets/css/admin.css (modified) (2 diffs)
-
trunk/assets/css/scheduled-exports.css (added)
-
trunk/assets/js/admin-batch-optimized.js (added)
-
trunk/assets/js/admin-batch.js (added)
-
trunk/assets/js/admin.js (modified) (5 diffs)
-
trunk/assets/js/batch-settings.js (added)
-
trunk/assets/js/pages.js (modified) (2 diffs)
-
trunk/assets/js/scheduled-exports.js (added)
-
trunk/includes/class-admin-menu.php (modified) (7 diffs)
-
trunk/includes/class-ajax-handler.php (modified) (2 diffs)
-
trunk/includes/class-batch-processor.php (added)
-
trunk/includes/class-batch-settings.php (added)
-
trunk/includes/class-heartbeat-handler.php (added)
-
trunk/includes/class-main.php (modified) (3 diffs)
-
trunk/includes/class-page-handler.php (modified) (2 diffs)
-
trunk/includes/class-post-handler.php (modified) (15 diffs)
-
trunk/includes/class-scheduled-exports.php (added)
-
trunk/includes/class-widgets-menus-handler.php (modified) (3 diffs)
-
trunk/languages/post-export-import-with-media.pot (modified) (11 diffs)
-
trunk/post-export-import-with-media.php (modified) (5 diffs)
-
trunk/readme.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
post-export-import-with-media/trunk/assets/css/admin.css
r3425395 r3460903 930 930 } 931 931 932 /* Danger Modal */ 933 .peiwm-danger-modal .peiwm-modal-header { 934 background: #fff5f5; 935 border-bottom-color: #fed7d7; 936 } 937 938 .peiwm-danger-modal .peiwm-modal-header h3 { 939 color: #742a2a; 940 } 941 942 .peiwm-danger-icon { 943 font-size: 48px; 944 color: #e53e3e; 945 margin-bottom: 15px; 946 font-weight: bold; 947 } 948 949 .peiwm-danger-modal .peiwm-modal-footer { 950 background: #fff5f5; 951 border-top-color: #fed7d7; 952 } 953 932 954 /* Modal Content Variations */ 933 955 .peiwm-modal-body.peiwm-text-left { … … 1691 1713 } 1692 1714 } 1715 1716 1717 /* PRO Feature Styles */ 1718 .peiwm-pro-lock { 1719 display: inline-block; 1720 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 1721 color: #fff; 1722 padding: 2px 8px; 1723 border-radius: 3px; 1724 font-size: 10px; 1725 font-weight: 600; 1726 text-transform: uppercase; 1727 letter-spacing: 0.5px; 1728 margin-left: 5px; 1729 vertical-align: middle; 1730 } 1731 1732 .peiwm-pro-badge-large { 1733 display: inline-block; 1734 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 1735 color: #fff; 1736 padding: 5px 15px; 1737 border-radius: 5px; 1738 font-size: 12px; 1739 font-weight: 600; 1740 text-transform: uppercase; 1741 letter-spacing: 0.5px; 1742 margin-left: 10px; 1743 vertical-align: middle; 1744 } 1745 1746 .peiwm-pro-feature-wrap { 1747 background: #fff; 1748 padding: 20px; 1749 border-radius: 8px; 1750 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 1751 } 1752 1753 .peiwm-pro-locked-feature { 1754 background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); 1755 border: 2px solid #667eea; 1756 border-radius: 12px; 1757 padding: 60px 40px; 1758 text-align: center; 1759 margin-top: 30px; 1760 position: relative; 1761 } 1762 1763 .peiwm-pro-locked-icon { 1764 font-size: 80px; 1765 margin-bottom: 20px; 1766 opacity: 0.8; 1767 } 1768 1769 .peiwm-pro-locked-feature h2 { 1770 color: #667eea; 1771 font-size: 32px; 1772 margin-bottom: 15px; 1773 font-weight: 700; 1774 } 1775 1776 .peiwm-pro-locked-feature>p { 1777 font-size: 18px; 1778 color: #4a5568; 1779 margin-bottom: 30px; 1780 } 1781 1782 .peiwm-pro-features-list { 1783 list-style: none; 1784 padding: 0; 1785 margin: 0 auto 40px; 1786 display: inline-block; 1787 text-align: left; 1788 max-width: 600px; 1789 } 1790 1791 .peiwm-pro-features-list li { 1792 font-size: 16px; 1793 color: #2d3748; 1794 padding: 12px 0; 1795 border-bottom: 1px solid rgba(102, 126, 234, 0.2); 1796 font-weight: 500; 1797 } 1798 1799 .peiwm-pro-features-list li:last-child { 1800 border-bottom: none; 1801 } 1802 1803 .peiwm-pro-locked-feature .button-hero { 1804 font-size: 18px; 1805 padding: 15px 40px; 1806 height: auto; 1807 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 1808 border: none; 1809 box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); 1810 transition: all 0.3s ease; 1811 } 1812 1813 .peiwm-pro-locked-feature .button-hero:hover { 1814 transform: translateY(-2px); 1815 box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6); 1816 } 1817 1818 .peiwm-pro-feature-active { 1819 background: #f0f9ff; 1820 border: 2px dashed #3b82f6; 1821 border-radius: 8px; 1822 padding: 40px; 1823 text-align: center; 1824 margin-top: 30px; 1825 } 1826 1827 .peiwm-pro-feature-active p { 1828 font-size: 16px; 1829 color: #1e40af; 1830 margin: 0; 1831 } 1832 1833 /* Locked Configuration Section with Blurry Glass Effect */ 1834 .peiwm-locked-section { 1835 position: relative; 1836 padding: 20px; 1837 margin: 10px; 1838 } 1839 1840 .peiwm-locked-section::before { 1841 content: ''; 1842 position: absolute; 1843 top: 0; 1844 left: 0; 1845 right: 0; 1846 bottom: 0; 1847 background: rgba(255, 255, 255, 0.3); 1848 backdrop-filter: blur(1px); 1849 -webkit-backdrop-filter: blur(8px); 1850 z-index: 9; 1851 border-radius: 8px; 1852 } 1853 1854 .peiwm-locked-section:hover::after { 1855 transform: scale(1.05); 1856 box-shadow: 0 6px 20px rgba(102, 126, 234, 0.7); 1857 } 1858 1859 .peiwm-locked-section input, 1860 .peiwm-locked-section select, 1861 .peiwm-locked-section textarea { 1862 cursor: not-allowed !important; 1863 } 1864 1865 /* Clickable PRO Badge Overlay */ 1866 .peiwm-pro-upgrade-overlay { 1867 position: absolute; 1868 top: 0; 1869 left: 0; 1870 right: 0; 1871 bottom: 0; 1872 z-index: 11; 1873 cursor: pointer; 1874 display: flex; 1875 align-items: center; 1876 justify-content: center; 1877 } 1878 1879 .peiwm-pro-upgrade-badge { 1880 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 1881 color: #fff; 1882 padding: 20px 40px; 1883 border-radius: 12px; 1884 font-weight: 700; 1885 font-size: 16px; 1886 box-shadow: 0 8px 25px rgba(102, 126, 234, 0.5); 1887 text-transform: uppercase; 1888 letter-spacing: 1.5px; 1889 transition: all 0.3s ease; 1890 text-decoration: none; 1891 display: inline-block; 1892 } 1893 1894 .peiwm-pro-upgrade-badge:hover { 1895 transform: translateY(-3px); 1896 box-shadow: 0 12px 35px rgba(102, 126, 234, 0.7); 1897 color: #fff; 1898 text-decoration: none; 1899 } 1900 1901 /* Scheduled Exports Page Styles */ 1902 .peiwm-pro-feature-wrap { 1903 background: linear-gradient(135deg, #fefdf9 0%, #fff7ed 50%, #fef3e2 100%); 1904 padding: 40px; 1905 border-radius: 24px; 1906 box-shadow: var(--shadow-warm); 1907 max-width: 1200px; 1908 margin: 20px auto; 1909 } 1910 1911 .peiwm-pro-feature-wrap h1 { 1912 font-size: 32px; 1913 font-weight: 800; 1914 background: var(--gradient-primary); 1915 -webkit-background-clip: text; 1916 -webkit-text-fill-color: transparent; 1917 background-clip: text; 1918 margin-bottom: 1rem; 1919 display: flex; 1920 align-items: center; 1921 gap: 1rem; 1922 } 1923 1924 .peiwm-pro-feature-wrap .description { 1925 font-size: 16px; 1926 color: var(--text-secondary); 1927 margin-bottom: 2rem; 1928 } 1929 1930 .peiwm-pro-locked-feature { 1931 background: rgba(255, 255, 255, 0.9); 1932 backdrop-filter: blur(10px); 1933 -webkit-backdrop-filter: blur(10px); 1934 border: 2px solid rgba(249, 115, 22, 0.3); 1935 border-radius: 24px; 1936 padding: 60px 40px; 1937 text-align: center; 1938 margin-top: 30px; 1939 position: relative; 1940 box-shadow: var(--shadow-warm); 1941 } 1942 1943 .peiwm-pro-locked-icon { 1944 font-size: 80px; 1945 margin-bottom: 20px; 1946 opacity: 0.9; 1947 animation: pulse 2s ease-in-out infinite; 1948 } 1949 1950 .peiwm-pro-locked-feature h2 { 1951 color: var(--primary); 1952 font-size: 32px; 1953 margin-bottom: 15px; 1954 font-weight: 700; 1955 } 1956 1957 .peiwm-pro-locked-feature>p { 1958 font-size: 18px; 1959 color: var(--text-secondary); 1960 margin-bottom: 30px; 1961 } 1962 1963 .peiwm-pro-features-list { 1964 list-style: none; 1965 padding: 0; 1966 margin: 0 auto 40px; 1967 display: inline-block; 1968 text-align: left; 1969 max-width: 600px; 1970 } 1971 1972 .peiwm-pro-features-list li { 1973 font-size: 16px; 1974 color: var(--text-primary); 1975 padding: 12px 0; 1976 border-bottom: 1px solid rgba(249, 115, 22, 0.2); 1977 font-weight: 500; 1978 } 1979 1980 .peiwm-pro-features-list li:last-child { 1981 border-bottom: none; 1982 } 1983 1984 .peiwm-pro-locked-feature .button-hero { 1985 font-size: 18px; 1986 padding: 15px 40px; 1987 height: auto; 1988 background: var(--gradient-primary); 1989 border: none; 1990 box-shadow: 0 4px 15px rgba(249, 115, 22, 0.4); 1991 transition: all 0.3s ease; 1992 color: white; 1993 text-decoration: none; 1994 border-radius: 16px; 1995 } 1996 1997 .peiwm-pro-locked-feature .button-hero:hover { 1998 transform: translateY(-3px); 1999 box-shadow: 0 8px 25px rgba(249, 115, 22, 0.6); 2000 color: white; 2001 } 2002 2003 /* Batch Settings Page Styles */ 2004 .peiwm-settings-wrap { 2005 background: linear-gradient(135deg, #fefdf9 0%, #fff7ed 50%, #fef3e2 100%); 2006 padding: 40px; 2007 border-radius: 24px; 2008 box-shadow: var(--shadow-warm); 2009 max-width: 1200px; 2010 margin: 20px auto; 2011 } 2012 2013 .peiwm-settings-wrap h1 { 2014 font-size: 32px; 2015 font-weight: 800; 2016 background: var(--gradient-primary); 2017 -webkit-background-clip: text; 2018 -webkit-text-fill-color: transparent; 2019 background-clip: text; 2020 margin-bottom: 1rem; 2021 } 2022 2023 .peiwm-settings-header { 2024 background: rgba(255, 255, 255, 0.9); 2025 backdrop-filter: blur(10px); 2026 -webkit-backdrop-filter: blur(10px); 2027 padding: 20px; 2028 border-left: 4px solid var(--primary); 2029 margin: 20px 0; 2030 box-shadow: var(--shadow-md); 2031 border-radius: 12px; 2032 } 2033 2034 .peiwm-section-title { 2035 border-bottom: 2px solid var(--primary); 2036 padding-bottom: 10px; 2037 margin-top: 30px; 2038 color: var(--text-primary); 2039 font-weight: 700; 2040 } 2041 2042 .peiwm-settings-table { 2043 border-radius: 12px; 2044 padding: 20px; 2045 } 2046 2047 .peiwm-toggle-switch { 2048 position: relative; 2049 display: inline-block; 2050 width: 60px; 2051 height: 34px; 2052 } 2053 2054 .peiwm-toggle-switch input { 2055 opacity: 0; 2056 width: 0; 2057 height: 0; 2058 } 2059 2060 .peiwm-toggle-slider { 2061 position: absolute; 2062 cursor: pointer; 2063 top: 0; 2064 left: 0; 2065 right: 0; 2066 bottom: 0; 2067 background-color: #ccc; 2068 transition: .4s; 2069 border-radius: 34px; 2070 } 2071 2072 .peiwm-toggle-slider:before { 2073 position: absolute; 2074 content: ""; 2075 height: 26px; 2076 width: 26px; 2077 left: 4px; 2078 bottom: 4px; 2079 background-color: white; 2080 transition: .4s; 2081 border-radius: 50%; 2082 } 2083 2084 input:checked + .peiwm-toggle-slider { 2085 background: var(--gradient-primary); 2086 } 2087 2088 input:checked + .peiwm-toggle-slider:before { 2089 transform: translateX(26px); 2090 } 2091 2092 .peiwm-feature-badge { 2093 margin-top: 10px; 2094 } 2095 2096 .peiwm-badge { 2097 display: inline-block; 2098 padding: 4px 12px; 2099 border-radius: 3px; 2100 font-size: 11px; 2101 font-weight: 600; 2102 text-transform: uppercase; 2103 letter-spacing: 0.5px; 2104 } 2105 2106 .peiwm-badge-free { 2107 background: var(--success); 2108 color: #fff; 2109 } 2110 2111 .peiwm-badge-text { 2112 margin-left: 8px; 2113 color: var(--text-secondary); 2114 font-size: 13px; 2115 } 2116 2117 .peiwm-unit { 2118 margin-left: 5px; 2119 color: var(--text-secondary); 2120 } 2121 2122 .peiwm-recommendations-box { 2123 background: rgba(255, 255, 255, 0.9); 2124 backdrop-filter: blur(10px); 2125 -webkit-backdrop-filter: blur(10px); 2126 border: 2px solid rgba(249, 115, 22, 0.3); 2127 border-radius: 16px; 2128 padding: 20px; 2129 margin-top: 30px; 2130 box-shadow: var(--shadow-md); 2131 } 2132 2133 .peiwm-recommendations-box h3 { 2134 margin-top: 0; 2135 color: var(--primary); 2136 } 2137 2138 .peiwm-stat-row { 2139 display: flex; 2140 gap: 20px; 2141 margin: 15px 0; 2142 } 2143 2144 .peiwm-stat-item { 2145 flex: 1; 2146 background: rgba(255, 255, 255, 0.9); 2147 padding: 15px; 2148 border-radius: 12px; 2149 border: 2px solid var(--border-warm); 2150 box-shadow: var(--shadow-sm); 2151 transition: all 0.3s ease; 2152 } 2153 2154 .peiwm-stat-item:hover { 2155 border-color: var(--primary); 2156 transform: translateY(-2px); 2157 box-shadow: var(--shadow-md); 2158 } 2159 2160 .peiwm-stat-label { 2161 font-size: 12px; 2162 color: var(--text-muted); 2163 text-transform: uppercase; 2164 letter-spacing: 0.5px; 2165 } 2166 2167 .peiwm-stat-value { 2168 font-size: 24px; 2169 font-weight: 700; 2170 background: var(--gradient-primary); 2171 -webkit-background-clip: text; 2172 -webkit-text-fill-color: transparent; 2173 background-clip: text; 2174 margin-top: 5px; 2175 } 2176 2177 .peiwm-recommendation { 2178 background: rgba(255, 255, 255, 0.9); 2179 padding: 15px; 2180 border-left: 4px solid var(--primary); 2181 margin-top: 15px; 2182 border-radius: 8px; 2183 } 2184 2185 .peiwm-recommendation strong { 2186 color: var(--primary); 2187 } -
post-export-import-with-media/trunk/assets/js/admin.js
r3425395 r3460903 2 2 'use strict'; 3 3 4 // Initialize checkbox default state 4 // Initialize checkbox default states 5 $('#peiwm-check-media-library').prop('checked', true); 5 6 $('#peiwm-download-missing-images').prop('checked', true); 6 7 … … 463 464 let currentIndex = 0; 464 465 const totalPosts = posts.length; 466 let isProcessing = false; 465 467 466 468 function processNextPost() { … … 472 474 } 473 475 476 if (isProcessing) { 477 return; // Prevent concurrent processing 478 } 479 480 isProcessing = true; 474 481 const post = posts[currentIndex]; 475 482 const downloadMissingImages = $('#peiwm-download-missing-images').is(':checked') ? '1' : '0'; … … 561 568 function importPostContent(post) { 562 569 const downloadMissingImages = $('#peiwm-download-missing-images').is(':checked') ? '1' : '0'; 570 const checkMediaLibrary = $('#peiwm-check-media-library').is(':checked') ? '1' : '0'; 563 571 564 572 $.ajax({ 565 573 url: peiwm_ajax.ajax_url, 566 574 type: 'POST', 567 timeout: 60000, // 1 minute for post creation575 timeout: 30000, // Reduced to 30 seconds 568 576 data: { 569 577 action: 'peiwm_import_post', 570 578 nonce: peiwm_ajax.nonce, 571 579 post_data: JSON.stringify(post), 572 download_missing_images: downloadMissingImages 580 download_missing_images: downloadMissingImages, 581 check_media_library: checkMediaLibrary 573 582 }, 574 583 success: function (response) { … … 584 593 }, 585 594 error: function (xhr, status, error) { 586 addLog('✗ Error: ' + post.post_title + ' - ' + error, log); 595 if (status === 'timeout') { 596 addLog('⚠ Timeout: ' + post.post_title + ' - Request took too long, but may have completed', log, 'peiwm-log-warning'); 597 } else { 598 addLog('✗ Error: ' + post.post_title + ' - ' + error, log); 599 } 587 600 }, 588 601 complete: function () { 602 isProcessing = false; 589 603 currentIndex++; 590 604 const progressPercent = Math.round((currentIndex / totalPosts) * 100); 591 605 progressFill.css('width', progressPercent + '%'); 592 progressText.text(' Importing posts... (' + currentIndex + ' of ' + totalPosts + ')');593 594 // Process next post with a small delay595 setTimeout(processNextPost, 100);606 progressText.text('Processing: ' + currentIndex + ' of ' + totalPosts + ' posts (' + progressPercent + '%) - Batch ' + Math.ceil(currentIndex / totalPosts) + '/1'); 607 608 // Process next post with a delay to prevent server overload 609 setTimeout(processNextPost, 500); 596 610 } 597 611 }); -
post-export-import-with-media/trunk/assets/js/pages.js
r3425395 r3460903 203 203 const page = pages[currentIndex]; 204 204 const downloadMissingImages = $('#peiwm-download-missing-page-images').is(':checked') ? '1' : '0'; 205 const checkMediaLibrary = $('#peiwm-check-media-library-pages').is(':checked') ? '1' : '0'; 205 206 206 207 // Show what we're about to do … … 226 227 nonce: peiwm_ajax.nonce, 227 228 page_data: JSON.stringify(page), 228 download_missing_images: downloadMissingImages 229 download_missing_images: downloadMissingImages, 230 check_media_library: checkMediaLibrary 229 231 }, 230 232 success: function (response) { -
post-export-import-with-media/trunk/includes/class-admin-menu.php
r3441984 r3460903 41 41 private function __construct() { 42 42 add_action( 'admin_menu', array( $this, 'add_admin_menu' ) ); 43 add_action( 'admin_menu', array( $this, 'add_recommendations_menu' ), 50 ); 43 44 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); 44 45 add_action( 'current_screen', array( $this, 'protect_plugin_pages' ) ); … … 117 118 */ 118 119 public function add_admin_menu() { 120 119 121 add_menu_page( 120 122 esc_html__( 'WP Post Export Import', 'post-export-import-with-media' ), … … 157 159 ); 158 160 159 // Add recommendations submenu 161 // Note: Batch Settings (priority 30) and Scheduled Exports (priority 40) 162 // are added by their respective classes 163 // Recommendations (priority 50) is added in add_recommendations_menu() 164 } 165 166 /** 167 * Add recommendations menu (priority 50 to appear last) 168 */ 169 public function add_recommendations_menu() { 160 170 add_submenu_page( 161 171 'peiwm-secure', … … 331 341 ) ); 332 342 } 343 344 // Scheduled Exports page 345 if ( 'export-import-posts_page_peiwm-exports-settings' === $hook ) { 346 wp_enqueue_style( 347 'peiwm-admin-css', 348 PEIWM_PLUGIN_URL . 'assets/css/admin.css', 349 array(), 350 PEIWM_VERSION 351 ); 352 } 353 354 // Batch Settings page 355 if ( 'export-import-posts_page_peiwm-batch-settings' === $hook ) { 356 wp_enqueue_style( 357 'peiwm-admin-css', 358 PEIWM_PLUGIN_URL . 'assets/css/admin.css', 359 array(), 360 PEIWM_VERSION 361 ); 362 } 333 363 } 334 364 … … 373 403 <div class="peiwm-import-options" style="margin-top: 1rem;"> 374 404 <label class="peiwm-checkbox-label"> 375 <input type="checkbox" id="peiwm-download-missing-images"> 405 <input type="checkbox" id="peiwm-check-media-library" checked> 406 <span class="peiwm-checkbox-text"> 407 <?php echo esc_html__( 'Check media library for post images', 'post-export-import-with-media' ); ?> 408 <small class="peiwm-checkbox-description"> 409 <?php echo esc_html__( 'Check if images already exist in media library before importing. Uncheck for faster import (images will be missing).', 'post-export-import-with-media' ); ?> 410 </small> 411 </span> 412 </label> 413 414 <label class="peiwm-checkbox-label" style="margin-top: 0.5rem;"> 415 <input type="checkbox" id="peiwm-download-missing-images" checked> 376 416 <span class="peiwm-checkbox-text"> 377 417 <?php echo esc_html__( 'Download missing images from original URLs', 'post-export-import-with-media' ); ?> 378 418 <small class="peiwm-checkbox-description"> 379 <?php echo esc_html__( 'If images are not found in media library, try to download them from their original locations ', 'post-export-import-with-media' ); ?>419 <?php echo esc_html__( 'If images are not found in media library, try to download them from their original locations. Uncheck for faster import.', 'post-export-import-with-media' ); ?> 380 420 </small> 381 421 </span> … … 598 638 599 639 <div class="peiwm-import-options" style="margin-top: 1rem;"> 640 <label class="peiwm-checkbox-label"> 641 <input type="checkbox" id="peiwm-check-media-library-pages" checked> 642 <span class="peiwm-checkbox-text"> 643 <?php echo esc_html__( 'Check media library for page images', 'post-export-import-with-media' ); ?> 644 <small class="peiwm-checkbox-description"> 645 <?php echo esc_html__( 'Search for images in your media library before downloading. Uncheck for faster import if you plan to add images manually later.', 'post-export-import-with-media' ); ?> 646 </small> 647 </span> 648 </label> 649 600 650 <label class="peiwm-checkbox-label"> 601 651 <input type="checkbox" id="peiwm-download-missing-page-images"> … … 1097 1147 <?php 1098 1148 } 1149 1150 1151 1099 1152 } -
post-export-import-with-media/trunk/includes/class-ajax-handler.php
r3425395 r3460903 52 52 // Media stats 53 53 add_action( 'wp_ajax_peiwm_get_media_stats', array( $this, 'ajax_get_media_stats' ) ); 54 55 // Content stats for batch settings 56 add_action( 'wp_ajax_peiwm_get_content_stats', array( $this, 'ajax_get_content_stats' ) ); 54 57 55 58 // Download handlers … … 92 95 } catch ( Exception $e ) { 93 96 wp_send_json_error( array( 'message' => esc_html__( 'System test failed', 'post-export-import-with-media' ) ) ); 97 } 98 } 99 100 /** 101 * AJAX: Get content statistics for batch settings 102 */ 103 public function ajax_get_content_stats() { 104 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'peiwm_secure_nonce' ) ) { 105 wp_send_json_error( array( 'message' => esc_html__( 'Security check failed', 'post-export-import-with-media' ) ) ); 106 } 107 108 if ( ! current_user_can( 'manage_options' ) ) { 109 wp_send_json_error( array( 'message' => esc_html__( 'Permission denied', 'post-export-import-with-media' ) ) ); 110 } 111 112 try { 113 $total_posts = wp_count_posts( 'post' ); 114 $total_pages = wp_count_posts( 'page' ); 115 $total_media = wp_count_posts( 'attachment' ); 116 117 wp_send_json_success( array( 118 'total_posts' => $total_posts->publish + $total_posts->draft + $total_posts->pending, 119 'total_pages' => $total_pages->publish + $total_pages->draft + $total_pages->pending, 120 'total_media' => $total_media->inherit, 121 ) ); 122 123 } catch ( Exception $e ) { 124 wp_send_json_error( array( 'message' => esc_html__( 'Failed to get content statistics', 'post-export-import-with-media' ) ) ); 94 125 } 95 126 } -
post-export-import-with-media/trunk/includes/class-main.php
r3425395 r3460903 56 56 add_action( 'plugins_loaded', array( $this, 'setup_error_suppression' ), 1 ); 57 57 } 58 59 /** 60 * Helper function to check if Freemius is available (either from Free or Pro). 61 * 62 * @since 1.3.0 63 * @return object|null Freemius SDK object or null. 64 */ 65 public function is_pro_active() { 66 $is_pro_installed = class_exists('PEIWM_Pro_Main') && $this->check_pro_plugin_exists(); 67 68 // Get the correct Freemius instance based on which plugin is handling it 69 $freemius_instance = peiwm_get_freemius_instance(); 70 71 // If no Freemius instance available, return false 72 if ( ! $freemius_instance ) { 73 return false; 74 } 75 76 return $freemius_instance->can_use_premium_code__premium_only() && $is_pro_installed; 77 } 78 79 /** 80 * Helper function to check if Pro version is active. 81 * 82 * @since 1.3.0 83 * @return bool Whether Pro version is active. 84 */ 85 public function check_pro_plugin_exists() { 86 // return is_plugin_active( 'post-export-import-with-media-pro/post-export-import-with-media-pro.php' ); 87 return file_exists( WP_PLUGIN_DIR . '/post-export-import-with-media-pro/post-export-import-with-media-pro.php' ); 88 } 89 58 90 59 91 /** … … 153 185 require_once PEIWM_PLUGIN_PATH . 'includes/class-widgets-menus-handler.php'; 154 186 require_once PEIWM_PLUGIN_PATH . 'includes/class-admin-download-buttons.php'; 187 require_once PEIWM_PLUGIN_PATH . 'includes/class-batch-settings.php'; 188 require_once PEIWM_PLUGIN_PATH . 'includes/class-batch-processor.php'; 189 require_once PEIWM_PLUGIN_PATH . 'includes/class-heartbeat-handler.php'; 190 require_once PEIWM_PLUGIN_PATH . 'includes/class-scheduled-exports.php'; 155 191 require_once PEIWM_PLUGIN_PATH . 'includes/class-generic-recommendations.php'; 156 192 } … … 206 242 // Initialize admin download buttons 207 243 PEIWM_Admin_Download_Buttons::get_instance(); 244 245 // Initialize batch settings 246 PEIWM_Scheduled_Exports::get_instance(); 247 248 // Initialize batch settings 249 PEIWM_Batch_Settings::get_instance(); 250 251 // Initialize batch processor 252 PEIWM_Batch_Processor::get_instance(); 253 254 // Initialize heartbeat handler 255 PEIWM_Heartbeat_Handler::get_instance(); 208 256 209 257 // Initialize recommendations -
post-export-import-with-media/trunk/includes/class-page-handler.php
r3425395 r3460903 122 122 */ 123 123 public function ajax_import_page() { 124 // CRITICAL: Close session early to allow concurrent requests 125 if ( session_id() ) { 126 session_write_close(); 127 } 128 129 // Set reasonable execution time limit 130 @set_time_limit( 60 ); // 60 seconds per page 131 @ini_set( 'max_execution_time', '60' ); 132 133 // Optimize memory usage 134 @ini_set( 'memory_limit', '256M' ); 135 124 136 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'peiwm_secure_nonce' ) ) { 125 137 wp_send_json_error( array( 'message' => esc_html__( 'Security check failed', 'post-export-import-with-media' ) ) ); … … 206 218 // Import content images first and update page content 207 219 $updated_content = $sanitized_page_data['post_content']; 208 if ( ! empty( $sanitized_page_data['content_images'] ) ) {220 if ( $check_media_library && ! empty( $sanitized_page_data['content_images'] ) ) { 209 221 $updated_content = $this->import_content_images_secure( $page_id, $sanitized_page_data['content_images'], $sanitized_page_data['post_content'], $download_missing_images ); 210 222 } 223 // If not checking media, we skip image processing entirely - images remain as placeholders in content 211 224 212 225 // Import featured image 213 if ( ! empty( $sanitized_page_data['featured_image'] ) ) {226 if ( $check_media_library && ! empty( $sanitized_page_data['featured_image'] ) ) { 214 227 $this->import_featured_image_secure( $page_id, $sanitized_page_data['featured_image'], $download_missing_images ); 215 228 } -
post-export-import-with-media/trunk/includes/class-post-handler.php
r3425395 r3460903 122 122 */ 123 123 public function ajax_import_post() { 124 // CRITICAL: Close session early to allow concurrent requests 125 if ( session_id() ) { 126 session_write_close(); 127 } 128 129 // Set reasonable execution time limit 130 @set_time_limit( 60 ); // 60 seconds per post 131 @ini_set( 'max_execution_time', '60' ); 132 133 // Optimize memory usage 134 @ini_set( 'memory_limit', '256M' ); 135 124 136 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'peiwm_secure_nonce' ) ) { 125 137 wp_send_json_error( array( 'message' => esc_html__( 'Security check failed', 'post-export-import-with-media' ) ) ); … … 133 145 $post_data_raw = isset( $_POST['post_data'] ) ? wp_unslash( $_POST['post_data'] ) : ''; //phpcs:ignore we have sanitize below with sanitize_post_data 134 146 $download_missing_images = isset( $_POST['download_missing_images'] ) && $_POST['download_missing_images'] === '1'; 147 $check_media_library = isset( $_POST['check_media_library'] ) && $_POST['check_media_library'] === '1'; 135 148 136 149 if ( empty( $post_data_raw ) ) { … … 159 172 160 173 if ( ! empty( $existing_posts ) ) { 161 wp_reset_postdata(); // Reset before returning162 174 wp_send_json_success( array( 163 175 'status' => 'skipped', … … 165 177 ) ); 166 178 } 167 168 // Reset post data after check169 wp_reset_postdata();170 179 171 180 // Insert post … … 182 191 183 192 if ( is_wp_error( $post_id ) ) { 184 wp_reset_postdata(); // Reset before throwing exception185 193 throw new Exception( sprintf( 186 194 esc_html__( 'Failed to create post: %s', 'post-export-import-with-media' ), … … 189 197 } 190 198 191 // Reset after post creation192 wp_reset_postdata();193 194 199 // Set post format 195 200 if ( ! empty( $sanitized_post_data['post_format'] ) && $sanitized_post_data['post_format'] !== 'standard' ) { … … 214 219 // Import content images first and update post content 215 220 $updated_content = $sanitized_post_data['post_content']; 216 if ( ! empty( $sanitized_post_data['content_images'] ) ) {221 if ( $check_media_library && ! empty( $sanitized_post_data['content_images'] ) ) { 217 222 $updated_content = $this->import_content_images_secure( $post_id, $sanitized_post_data['content_images'], $sanitized_post_data['post_content'], $download_missing_images ); 218 223 } 224 // If not checking media, we skip image processing entirely - images remain as placeholders in content 219 225 220 226 // Import featured image 221 if ( ! empty( $sanitized_post_data['featured_image'] ) ) {227 if ( $check_media_library && ! empty( $sanitized_post_data['featured_image'] ) ) { 222 228 $this->import_featured_image_secure( $post_id, $sanitized_post_data['featured_image'], $download_missing_images ); 223 229 } … … 229 235 'post_content' => $updated_content, 230 236 ) ); 231 // Reset after post update 232 wp_reset_postdata(); 233 } 237 } 238 239 // Reset global post data once at the end 240 wp_reset_postdata(); 241 242 // Clear object cache to prevent memory buildup 243 wp_cache_flush(); 234 244 235 245 // Get detailed import results … … 257 267 258 268 } catch ( Exception $e ) { 269 // Clear cache on error too 270 wp_cache_flush(); 259 271 wp_send_json_error( array( 'message' => esc_html__( 'Import failed. Please check the file format.', 'post-export-import-with-media' ) ) ); 260 272 } … … 265 277 */ 266 278 public function ajax_check_and_download_image() { 279 // CRITICAL: Close session early to allow concurrent requests 280 if ( session_id() ) { 281 session_write_close(); 282 } 283 267 284 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'peiwm_secure_nonce' ) ) { 268 285 wp_send_json_error( array( 'message' => esc_html__( 'Security check failed', 'post-export-import-with-media' ) ) ); … … 755 772 */ 756 773 private function find_existing_attachment_by_filename( $filename ) { 757 // First try exact filename match 758 $attachments = get_posts( array( 759 'post_type' => 'attachment', 760 'meta_query' => array( 761 array( 762 'key' => '_wp_attached_file', 763 'value' => $filename, 764 'compare' => 'LIKE' 765 ) 766 ), 767 'posts_per_page' => 1 774 global $wpdb; 775 776 // Use direct database query for better performance 777 $attachment_id = $wpdb->get_var( $wpdb->prepare( 778 "SELECT post_id FROM {$wpdb->postmeta} 779 WHERE meta_key = '_wp_attached_file' 780 AND meta_value LIKE %s 781 LIMIT 1", 782 '%' . $wpdb->esc_like( $filename ) 768 783 ) ); 769 784 770 if ( ! empty( $attachments ) ) { 771 wp_reset_postdata(); // Reset before returning 772 return $attachments[0]->ID; 773 } 774 775 // Reset after first query 776 wp_reset_postdata(); 785 if ( $attachment_id ) { 786 return absint( $attachment_id ); 787 } 777 788 778 789 // If not found, try searching by post title (filename without extension) 779 790 $title = pathinfo( $filename, PATHINFO_FILENAME ); 780 $attachments = get_posts( array( 781 'post_type' => 'attachment', 782 'title' => $title, 783 'posts_per_page' => 1 791 $attachment_id = $wpdb->get_var( $wpdb->prepare( 792 "SELECT ID FROM {$wpdb->posts} 793 WHERE post_type = 'attachment' 794 AND post_title = %s 795 LIMIT 1", 796 $title 784 797 ) ); 785 798 786 if ( ! empty( $attachments ) ) { 787 wp_reset_postdata(); // Reset before returning 788 return $attachments[0]->ID; 789 } 790 791 // Reset after second query 792 wp_reset_postdata(); 793 794 // Last resort: search by filename in post_title 795 $attachments = get_posts( array( 796 'post_type' => 'attachment', 797 's' => $title, 798 'posts_per_page' => 1 799 ) ); 800 801 $result = ! empty( $attachments ) ? $attachments[0]->ID : null; 802 wp_reset_postdata(); // Always reset at the end 803 return $result; 799 return $attachment_id ? absint( $attachment_id ) : null; 804 800 } 805 801 … … 987 983 $metadata = wp_generate_attachment_metadata( $attachment_id, $file_path ); 988 984 wp_update_attachment_metadata( $attachment_id, $metadata ); 989 990 // Reset global post data after metadata operations991 wp_reset_postdata();992 985 } 993 986 … … 1021 1014 remove_filter( 'http_request_timeout', array( $this, 'set_import_timeout' ) ); 1022 1015 remove_filter( 'http_request_args', array( $this, 'set_import_request_args' ) ); 1023 1024 // Reset global post data after media_sideload_image (creates attachment posts)1025 wp_reset_postdata();1026 1016 1027 1017 if ( is_wp_error( $attachment_id ) ) { … … 1072 1062 */ 1073 1063 public function set_import_timeout( $timeout ) { 1074 return 30; // 30 seconds timeout1064 return 20; // 20 seconds timeout - reduced from 30 1075 1065 } 1076 1066 … … 1082 1072 */ 1083 1073 public function set_import_request_args( $args ) { 1084 $args['timeout'] = 30; 1085 $args['redirection'] = 3; // Limit redirects 1074 $args['timeout'] = 20; // Reduced from 30 1075 $args['redirection'] = 2; // Reduced from 3 1076 $args['httpversion'] = '1.1'; // Use HTTP/1.1 for better compatibility 1077 $args['blocking'] = true; 1078 $args['compress'] = true; // Enable compression 1086 1079 return $args; 1087 1080 } -
post-export-import-with-media/trunk/includes/class-widgets-menus-handler.php
r3425395 r3460903 246 246 $this->execute_with_post_protection( function() { 247 247 try { 248 $widgets_data_raw = isset( $_POST['widgets_data'] ) ? wp_unslash( $_POST['widgets_data'] ) : ''; // phpcs:ignore - Sanitize with sanitize_import_data 248 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Data is sanitized via sanitize_import_data() method below 249 $widgets_data_raw = isset( $_POST['widgets_data'] ) ? wp_unslash( $_POST['widgets_data'] ) : ''; 250 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash -- Already unslashed above 249 251 $replace_existing = isset( $_POST['replace_existing'] ) && $_POST['replace_existing'] === '1'; 250 252 … … 286 288 $this->execute_with_post_protection( function() { 287 289 try { 288 $menus_data_raw = isset( $_POST['menus_data'] ) ? wp_unslash( $_POST['menus_data'] ) : ''; // phpcs:ignore - Sanitize with sanitize_import_data 290 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Data is sanitized via sanitize_import_data() method below 291 $menus_data_raw = isset( $_POST['menus_data'] ) ? wp_unslash( $_POST['menus_data'] ) : ''; 292 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash -- Already unslashed above 289 293 $replace_existing = isset( $_POST['replace_existing'] ) && $_POST['replace_existing'] === '1'; 290 294 … … 326 330 $this->execute_with_post_protection( function() { 327 331 try { 328 $data_raw = isset( $_POST['widgets_menus_data'] ) ? wp_unslash( $_POST['widgets_menus_data'] ) : ''; // phpcs:ignore - Sanitize with sanitize_import_data 332 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Data is sanitized via sanitize_import_data() method below 333 $data_raw = isset( $_POST['widgets_menus_data'] ) ? wp_unslash( $_POST['widgets_menus_data'] ) : ''; 334 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash -- Already unslashed above 329 335 $replace_existing = isset( $_POST['replace_existing'] ) && $_POST['replace_existing'] === '1'; 330 336 -
post-export-import-with-media/trunk/languages/post-export-import-with-media.pot
r3441984 r3460903 3 3 msgstr "" 4 4 "Project-Id-Version: \n" 5 "POT-Creation-Date: 2026-0 1-18 21:28+0600\n"5 "POT-Creation-Date: 2026-02-13 22:17+0600\n" 6 6 "PO-Revision-Date: 2023-11-15 13:18+0600\n" 7 7 "Last-Translator: \n" … … 47 47 #: includes/class-admin-download-buttons.php:244 48 48 #: includes/class-admin-download-buttons.php:289 49 #: includes/class-ajax-handler.php:65 includes/class-ajax-handler.php:102 50 #: includes/class-ajax-handler.php:182 includes/class-ajax-handler.php:219 49 #: includes/class-ajax-handler.php:68 includes/class-ajax-handler.php:105 50 #: includes/class-ajax-handler.php:133 includes/class-ajax-handler.php:213 51 #: includes/class-ajax-handler.php:250 includes/class-batch-processor.php:80 52 #: includes/class-batch-processor.php:127 53 #: includes/class-batch-processor.php:227 54 #: includes/class-batch-processor.php:274 55 #: includes/class-batch-processor.php:373 56 #: includes/class-batch-processor.php:437 57 #: includes/class-batch-processor.php:553 58 #: includes/class-batch-processor.php:615 59 #: includes/class-batch-processor.php:669 60 #: includes/class-batch-processor.php:731 61 #: includes/class-batch-processor.php:924 51 62 #: includes/class-generic-recommendations.php:164 52 63 #: includes/class-media-handler.php:80 includes/class-media-handler.php:189 53 64 #: includes/class-media-handler.php:319 includes/class-media-handler.php:400 54 65 #: includes/class-media-handler.php:463 includes/class-page-handler.php:68 55 #: includes/class-page-handler.php:1 25 includes/class-page-handler.php:26056 #: includes/class-page-handler.php: 590includes/class-post-handler.php:6857 #: includes/class-post-handler.php:1 25 includes/class-post-handler.php:26858 #: includes/class-post-handler.php:3 46includes/class-settings-handler.php:15466 #: includes/class-page-handler.php:137 includes/class-page-handler.php:273 67 #: includes/class-page-handler.php:603 includes/class-post-handler.php:68 68 #: includes/class-post-handler.php:137 includes/class-post-handler.php:285 69 #: includes/class-post-handler.php:363 includes/class-settings-handler.php:154 59 70 #: includes/class-settings-handler.php:227 60 71 #: includes/class-settings-handler.php:378 … … 69 80 #: includes/class-widgets-menus-handler.php:196 70 81 #: includes/class-widgets-menus-handler.php:239 71 #: includes/class-widgets-menus-handler.php:2 7972 #: includes/class-widgets-menus-handler.php:3 1982 #: includes/class-widgets-menus-handler.php:281 83 #: includes/class-widgets-menus-handler.php:323 73 84 msgid "Security check failed" 74 85 msgstr "" … … 76 87 #: includes/class-admin-download-buttons.php:248 77 88 #: includes/class-admin-download-buttons.php:293 78 #: includes/class-ajax-handler.php:69 includes/class-ajax-handler.php:106 79 #: includes/class-ajax-handler.php:186 includes/class-ajax-handler.php:223 80 #: includes/class-media-handler.php:84 includes/class-media-handler.php:193 81 #: includes/class-media-handler.php:323 includes/class-media-handler.php:404 82 #: includes/class-media-handler.php:467 includes/class-page-handler.php:72 83 #: includes/class-page-handler.php:129 includes/class-page-handler.php:264 84 #: includes/class-page-handler.php:594 includes/class-post-handler.php:72 85 #: includes/class-post-handler.php:129 includes/class-post-handler.php:272 86 #: includes/class-post-handler.php:350 includes/class-settings-handler.php:158 89 #: includes/class-ajax-handler.php:72 includes/class-ajax-handler.php:109 90 #: includes/class-ajax-handler.php:137 includes/class-ajax-handler.php:217 91 #: includes/class-ajax-handler.php:254 includes/class-batch-processor.php:84 92 #: includes/class-batch-processor.php:131 93 #: includes/class-batch-processor.php:231 94 #: includes/class-batch-processor.php:278 95 #: includes/class-batch-processor.php:377 96 #: includes/class-batch-processor.php:441 97 #: includes/class-batch-processor.php:557 98 #: includes/class-batch-processor.php:619 99 #: includes/class-batch-processor.php:673 100 #: includes/class-batch-processor.php:735 101 #: includes/class-batch-processor.php:928 includes/class-media-handler.php:84 102 #: includes/class-media-handler.php:193 includes/class-media-handler.php:323 103 #: includes/class-media-handler.php:404 includes/class-media-handler.php:467 104 #: includes/class-page-handler.php:72 includes/class-page-handler.php:141 105 #: includes/class-page-handler.php:277 includes/class-page-handler.php:607 106 #: includes/class-post-handler.php:72 includes/class-post-handler.php:141 107 #: includes/class-post-handler.php:289 includes/class-post-handler.php:367 108 #: includes/class-settings-handler.php:158 87 109 #: includes/class-settings-handler.php:231 88 110 #: includes/class-settings-handler.php:382 … … 97 119 #: includes/class-widgets-menus-handler.php:200 98 120 #: includes/class-widgets-menus-handler.php:243 99 #: includes/class-widgets-menus-handler.php:28 3100 #: includes/class-widgets-menus-handler.php:32 3121 #: includes/class-widgets-menus-handler.php:285 122 #: includes/class-widgets-menus-handler.php:327 101 123 msgid "Permission denied" 102 124 msgstr "" … … 144 166 msgstr "" 145 167 146 #: includes/class-admin-menu.php:12 0168 #: includes/class-admin-menu.php:122 147 169 msgid "WP Post Export Import" 148 170 msgstr "" 149 171 150 #: includes/class-admin-menu.php:12 1172 #: includes/class-admin-menu.php:123 151 173 msgid "Export/Import Posts" 152 174 msgstr "" 153 175 154 #: includes/class-admin-menu.php:132 includes/class-admin-menu.php:133 155 #: includes/class-admin-menu.php:571 includes/class-admin-menu.php:576 176 #: includes/class-admin-menu.php:134 includes/class-admin-menu.php:135 177 msgid "Export/Import Pages" 178 msgstr "" 179 180 #: includes/class-admin-menu.php:144 includes/class-admin-menu.php:145 181 msgid "WordPress Settings" 182 msgstr "" 183 184 #: includes/class-admin-menu.php:154 includes/class-admin-menu.php:855 185 msgid "Themes & Plugins Backup" 186 msgstr "" 187 188 #: includes/class-admin-menu.php:155 189 msgid "Themes & Plugins" 190 msgstr "" 191 192 #: includes/class-admin-menu.php:172 193 msgid "Plugin Recommendations" 194 msgstr "" 195 196 #: includes/class-admin-menu.php:173 197 msgid "Recommendations" 198 msgstr "" 199 200 #: includes/class-admin-menu.php:207 includes/class-admin-menu.php:240 201 #: includes/class-admin-menu.php:273 includes/class-admin-menu.php:306 202 msgid "Please select a file to import." 203 msgstr "" 204 205 #: includes/class-admin-menu.php:208 includes/class-admin-menu.php:241 206 #: includes/class-admin-menu.php:274 includes/class-admin-menu.php:307 207 msgid "File is too large. Please select a file smaller than 500MB." 208 msgstr "" 209 210 #: includes/class-admin-menu.php:209 includes/class-admin-menu.php:308 211 msgid "Please select a ZIP file." 212 msgstr "" 213 214 #: includes/class-admin-menu.php:210 includes/class-admin-menu.php:243 215 #: includes/class-admin-menu.php:276 includes/class-admin-menu.php:309 216 msgid "Processing..." 217 msgstr "" 218 219 #: includes/class-admin-menu.php:211 includes/class-admin-menu.php:244 220 #: includes/class-admin-menu.php:277 includes/class-admin-menu.php:310 221 #: includes/class-admin-menu.php:1114 222 msgid "Success!" 223 msgstr "" 224 225 #: includes/class-admin-menu.php:212 includes/class-admin-menu.php:245 226 #: includes/class-admin-menu.php:278 includes/class-admin-menu.php:311 227 msgid "Error:" 228 msgstr "" 229 230 #: includes/class-admin-menu.php:213 includes/class-admin-menu.php:246 231 #: includes/class-admin-menu.php:279 includes/class-admin-menu.php:312 232 msgid "Complete!" 233 msgstr "" 234 235 #: includes/class-admin-menu.php:214 includes/class-admin-menu.php:247 236 #: includes/class-admin-menu.php:280 includes/class-admin-menu.php:313 237 msgid "Are you sure you want to delete all items? This action cannot be undone." 238 msgstr "" 239 240 #: includes/class-admin-menu.php:242 includes/class-admin-menu.php:275 241 msgid "Please select a JSON file." 242 msgstr "" 243 244 #: includes/class-admin-menu.php:370 includes/class-admin-menu.php:606 245 #: includes/class-admin-menu.php:700 includes/class-admin-menu.php:851 246 #: includes/class-admin-menu.php:1062 includes/class-batch-settings.php:279 247 #: includes/class-scheduled-exports.php:853 248 msgid "You do not have sufficient permissions to access this page." 249 msgstr "" 250 251 #: includes/class-admin-menu.php:375 252 msgid "Export/Import Posts & Media" 253 msgstr "" 254 255 #: includes/class-admin-menu.php:380 256 msgid "Posts Export/Import" 257 msgstr "" 258 259 #: includes/class-admin-menu.php:383 includes/class-admin-menu.php:386 260 #: includes/class-admin-menu.php:561 261 msgid "Export Posts" 262 msgstr "" 263 264 #: includes/class-admin-menu.php:384 265 msgid "Export all posts with their metadata and featured images." 266 msgstr "" 267 268 #: includes/class-admin-menu.php:391 269 msgid "Import Posts" 270 msgstr "" 271 272 #: includes/class-admin-menu.php:392 273 msgid "Import posts from a previously exported JSON file." 274 msgstr "" 275 276 #: includes/class-admin-menu.php:396 includes/class-admin-menu.php:632 277 #: includes/class-admin-menu.php:761 includes/class-admin-menu.php:812 278 msgid "Select JSON File" 279 msgstr "" 280 281 #: includes/class-admin-menu.php:399 includes/class-admin-menu.php:487 282 #: includes/class-admin-menu.php:635 includes/class-admin-menu.php:764 283 #: includes/class-admin-menu.php:815 includes/class-admin-menu.php:911 284 #: includes/class-admin-menu.php:994 285 msgid "Start Import" 286 msgstr "" 287 288 #: includes/class-admin-menu.php:407 289 msgid "Check media library for post images" 290 msgstr "" 291 292 #: includes/class-admin-menu.php:409 293 msgid "Check if images already exist in media library before importing. Uncheck for faster import (images will be missing)." 294 msgstr "" 295 296 #: includes/class-admin-menu.php:417 includes/class-admin-menu.php:653 297 msgid "Download missing images from original URLs" 298 msgstr "" 299 300 #: includes/class-admin-menu.php:419 301 msgid "If images are not found in media library, try to download them from their original locations. Uncheck for faster import." 302 msgstr "" 303 304 #: includes/class-admin-menu.php:426 includes/class-admin-menu.php:492 305 #: includes/class-admin-menu.php:662 includes/class-admin-menu.php:774 306 #: includes/class-admin-menu.php:830 includes/class-admin-menu.php:933 307 #: includes/class-admin-menu.php:1016 308 msgid "Import Progress" 309 msgstr "" 310 311 #: includes/class-admin-menu.php:430 includes/class-admin-menu.php:447 312 #: includes/class-admin-menu.php:496 includes/class-admin-menu.php:513 313 #: includes/class-admin-menu.php:666 includes/class-admin-menu.php:683 314 #: includes/class-admin-menu.php:778 includes/class-admin-menu.php:834 315 #: includes/class-admin-menu.php:896 includes/class-admin-menu.php:937 316 #: includes/class-admin-menu.php:979 includes/class-admin-menu.php:1020 317 msgid "Starting..." 318 msgstr "" 319 320 #: includes/class-admin-menu.php:436 321 msgid "Delete Posts" 322 msgstr "" 323 324 #: includes/class-admin-menu.php:437 325 msgid "⚠️ Warning: This will permanently delete all posts. This action cannot be undone." 326 msgstr "" 327 328 #: includes/class-admin-menu.php:439 329 msgid "Delete All Posts" 330 msgstr "" 331 332 #: includes/class-admin-menu.php:443 includes/class-admin-menu.php:509 333 msgid "Delete Progress" 334 msgstr "" 335 336 #: includes/class-admin-menu.php:454 337 msgid "Media Export/Import" 338 msgstr "" 339 340 #: includes/class-admin-menu.php:457 341 msgid "Media Statistics" 342 msgstr "" 343 344 #: includes/class-admin-menu.php:461 345 msgid "Loading media statistics..." 346 msgstr "" 347 348 #: includes/class-admin-menu.php:462 349 msgid "Analyzing your media library" 350 msgstr "" 351 352 #: includes/class-admin-menu.php:466 353 msgid "Refresh Stats" 354 msgstr "" 355 356 #: includes/class-admin-menu.php:471 includes/class-admin-menu.php:474 357 msgid "Export Media" 358 msgstr "" 359 360 #: includes/class-admin-menu.php:472 361 msgid "Export all media files with their metadata as a ZIP file." 362 msgstr "" 363 364 #: includes/class-admin-menu.php:479 365 msgid "Import Media" 366 msgstr "" 367 368 #: includes/class-admin-menu.php:480 369 msgid "Import media files from a previously exported ZIP file. Maximum file size: 500MB." 370 msgstr "" 371 372 #: includes/class-admin-menu.php:484 includes/class-admin-menu.php:908 373 #: includes/class-admin-menu.php:991 374 msgid "Select ZIP File" 375 msgstr "" 376 377 #: includes/class-admin-menu.php:502 378 msgid "Delete Media" 379 msgstr "" 380 381 #: includes/class-admin-menu.php:503 382 msgid "⚠️ Warning: This will permanently delete all media files from the library. This action cannot be undone." 383 msgstr "" 384 385 #: includes/class-admin-menu.php:505 386 msgid "Delete All Media" 387 msgstr "" 388 389 #: includes/class-admin-menu.php:521 390 msgid "System Test" 391 msgstr "" 392 393 #: includes/class-admin-menu.php:522 394 msgid "Test your server configuration to ensure compatibility." 395 msgstr "" 396 397 #: includes/class-admin-menu.php:524 398 msgid "Test Configuration" 399 msgstr "" 400 401 #: includes/class-admin-menu.php:531 402 msgid "How to Use This Plugin" 403 msgstr "" 404 405 #: includes/class-admin-menu.php:532 406 msgid "Follow these steps for successful export and import with all images intact:" 407 msgstr "" 408 409 #: includes/class-admin-menu.php:540 410 msgid "Export Media Files" 411 msgstr "" 412 413 #: includes/class-admin-menu.php:544 414 msgid "Start by exporting all your media files using the \"Export Media\" button above. This will create a ZIP file containing your images, videos, and documents." 415 msgstr "" 416 417 #: includes/class-admin-menu.php:550 418 msgid "If your images are still available on the live site, you can enable \"Download missing images from original URLs\". This option downloads media directly from their original sources instead of the export file. Note that this may take more time. For faster imports, export the media first and keep this option unchecked." 419 msgstr "" 420 421 #: includes/class-admin-menu.php:562 422 msgid "Next, export your posts using the \"Export Posts\" button. This creates a JSON file with all post content and image references." 423 msgstr "" 424 425 #: includes/class-admin-menu.php:569 426 msgid "Import Media First" 427 msgstr "" 428 429 #: includes/class-admin-menu.php:570 430 msgid "On your destination site, import the media ZIP file first. This ensures all images are available before importing posts." 431 msgstr "" 432 433 #: includes/class-admin-menu.php:577 434 msgid "Import Posts Last" 435 msgstr "" 436 437 #: includes/class-admin-menu.php:578 438 msgid "Finally, import the posts JSON file. The plugin will automatically link posts to the previously imported images." 439 msgstr "" 440 441 #: includes/class-admin-menu.php:584 442 msgid "Pro Tips" 443 msgstr "" 444 445 #: includes/class-admin-menu.php:586 446 msgid "✓ Always import media before posts for complete image restoration" 447 msgstr "" 448 449 #: includes/class-admin-menu.php:587 450 msgid "✓ The plugin will show which images are missing during post import" 451 msgstr "" 452 453 #: includes/class-admin-menu.php:588 454 msgid "✓ Run the System Test first to ensure your server can handle large files" 455 msgstr "" 456 457 #: includes/class-admin-menu.php:589 458 msgid "✓ Existing images with the same filename will be reused automatically" 459 msgstr "" 460 461 #: includes/class-admin-menu.php:590 462 msgid "✓ If you enable \"Download missing images from original URLs\" and ensure the source site is live, media will be fetched directly from the original URLs. This means you won’t need to import media files separately, though the process may take additional time to download and complete." 463 msgstr "" 464 465 #: includes/class-admin-menu.php:611 includes/class-admin-menu.php:616 156 466 msgid "Pages Export/Import" 157 467 msgstr "" 158 468 159 #: includes/class-admin-menu.php:142 includes/class-admin-menu.php:143 160 msgid "WordPress Settings" 161 msgstr "" 162 163 #: includes/class-admin-menu.php:152 includes/class-admin-menu.php:805 164 msgid "Themes & Plugins Backup" 165 msgstr "" 166 167 #: includes/class-admin-menu.php:153 168 msgid "Themes & Plugins" 169 msgstr "" 170 171 #: includes/class-admin-menu.php:162 172 msgid "Plugin Recommendations" 173 msgstr "" 174 175 #: includes/class-admin-menu.php:163 176 msgid "Recommendations" 177 msgstr "" 178 179 #: includes/class-admin-menu.php:197 includes/class-admin-menu.php:230 180 #: includes/class-admin-menu.php:263 includes/class-admin-menu.php:296 181 msgid "Please select a file to import." 182 msgstr "" 183 184 #: includes/class-admin-menu.php:198 includes/class-admin-menu.php:231 185 #: includes/class-admin-menu.php:264 includes/class-admin-menu.php:297 186 msgid "File is too large. Please select a file smaller than 500MB." 187 msgstr "" 188 189 #: includes/class-admin-menu.php:199 includes/class-admin-menu.php:298 190 msgid "Please select a ZIP file." 191 msgstr "" 192 193 #: includes/class-admin-menu.php:200 includes/class-admin-menu.php:233 194 #: includes/class-admin-menu.php:266 includes/class-admin-menu.php:299 195 msgid "Processing..." 196 msgstr "" 197 198 #: includes/class-admin-menu.php:201 includes/class-admin-menu.php:234 199 #: includes/class-admin-menu.php:267 includes/class-admin-menu.php:300 200 #: includes/class-admin-menu.php:1064 201 msgid "Success!" 202 msgstr "" 203 204 #: includes/class-admin-menu.php:202 includes/class-admin-menu.php:235 205 #: includes/class-admin-menu.php:268 includes/class-admin-menu.php:301 206 msgid "Error:" 207 msgstr "" 208 209 #: includes/class-admin-menu.php:203 includes/class-admin-menu.php:236 210 #: includes/class-admin-menu.php:269 includes/class-admin-menu.php:302 211 msgid "Complete!" 212 msgstr "" 213 214 #: includes/class-admin-menu.php:204 includes/class-admin-menu.php:237 215 #: includes/class-admin-menu.php:270 includes/class-admin-menu.php:303 216 msgid "Are you sure you want to delete all items? This action cannot be undone." 217 msgstr "" 218 219 #: includes/class-admin-menu.php:232 includes/class-admin-menu.php:265 220 msgid "Please select a JSON file." 221 msgstr "" 222 223 #: includes/class-admin-menu.php:340 includes/class-admin-menu.php:566 224 #: includes/class-admin-menu.php:650 includes/class-admin-menu.php:801 225 #: includes/class-admin-menu.php:1012 226 msgid "You do not have sufficient permissions to access this page." 227 msgstr "" 228 229 #: includes/class-admin-menu.php:345 230 msgid "Export/Import Posts & Media" 231 msgstr "" 232 233 #: includes/class-admin-menu.php:350 234 msgid "Posts Export/Import" 235 msgstr "" 236 237 #: includes/class-admin-menu.php:353 includes/class-admin-menu.php:356 238 #: includes/class-admin-menu.php:521 239 msgid "Export Posts" 240 msgstr "" 241 242 #: includes/class-admin-menu.php:354 243 msgid "Export all posts with their metadata and featured images." 244 msgstr "" 245 246 #: includes/class-admin-menu.php:361 247 msgid "Import Posts" 248 msgstr "" 249 250 #: includes/class-admin-menu.php:362 251 msgid "Import posts from a previously exported JSON file." 252 msgstr "" 253 254 #: includes/class-admin-menu.php:366 includes/class-admin-menu.php:592 255 #: includes/class-admin-menu.php:711 includes/class-admin-menu.php:762 256 msgid "Select JSON File" 257 msgstr "" 258 259 #: includes/class-admin-menu.php:369 includes/class-admin-menu.php:447 260 #: includes/class-admin-menu.php:595 includes/class-admin-menu.php:714 261 #: includes/class-admin-menu.php:765 includes/class-admin-menu.php:861 262 #: includes/class-admin-menu.php:944 263 msgid "Start Import" 264 msgstr "" 265 266 #: includes/class-admin-menu.php:377 includes/class-admin-menu.php:603 267 msgid "Download missing images from original URLs" 268 msgstr "" 269 270 #: includes/class-admin-menu.php:379 includes/class-admin-menu.php:605 469 #: includes/class-admin-menu.php:619 includes/class-admin-menu.php:622 470 msgid "Export Pages" 471 msgstr "" 472 473 #: includes/class-admin-menu.php:620 474 msgid "Export all pages with their metadata, featured images, and hierarchy." 475 msgstr "" 476 477 #: includes/class-admin-menu.php:627 478 msgid "Import Pages" 479 msgstr "" 480 481 #: includes/class-admin-menu.php:628 482 msgid "Import pages from a previously exported JSON file." 483 msgstr "" 484 485 #: includes/class-admin-menu.php:643 486 msgid "Check media library for page images" 487 msgstr "" 488 489 #: includes/class-admin-menu.php:645 490 msgid "Search for images in your media library before downloading. Uncheck for faster import if you plan to add images manually later." 491 msgstr "" 492 493 #: includes/class-admin-menu.php:655 271 494 msgid "If images are not found in media library, try to download them from their original locations" 272 495 msgstr "" 273 496 274 #: includes/class-admin-menu.php:386 includes/class-admin-menu.php:452 275 #: includes/class-admin-menu.php:612 includes/class-admin-menu.php:724 276 #: includes/class-admin-menu.php:780 includes/class-admin-menu.php:883 277 #: includes/class-admin-menu.php:966 278 msgid "Import Progress" 279 msgstr "" 280 281 #: includes/class-admin-menu.php:390 includes/class-admin-menu.php:407 282 #: includes/class-admin-menu.php:456 includes/class-admin-menu.php:473 283 #: includes/class-admin-menu.php:616 includes/class-admin-menu.php:633 284 #: includes/class-admin-menu.php:728 includes/class-admin-menu.php:784 285 #: includes/class-admin-menu.php:846 includes/class-admin-menu.php:887 286 #: includes/class-admin-menu.php:929 includes/class-admin-menu.php:970 287 msgid "Starting..." 288 msgstr "" 289 290 #: includes/class-admin-menu.php:396 291 msgid "Delete Posts" 292 msgstr "" 293 294 #: includes/class-admin-menu.php:397 295 msgid "⚠️ Warning: This will permanently delete all posts. This action cannot be undone." 296 msgstr "" 297 298 #: includes/class-admin-menu.php:399 299 msgid "Delete All Posts" 300 msgstr "" 301 302 #: includes/class-admin-menu.php:403 includes/class-admin-menu.php:469 303 msgid "Delete Progress" 304 msgstr "" 305 306 #: includes/class-admin-menu.php:414 307 msgid "Media Export/Import" 308 msgstr "" 309 310 #: includes/class-admin-menu.php:417 311 msgid "Media Statistics" 312 msgstr "" 313 314 #: includes/class-admin-menu.php:421 315 msgid "Loading media statistics..." 316 msgstr "" 317 318 #: includes/class-admin-menu.php:422 319 msgid "Analyzing your media library" 320 msgstr "" 321 322 #: includes/class-admin-menu.php:426 323 msgid "Refresh Stats" 324 msgstr "" 325 326 #: includes/class-admin-menu.php:431 includes/class-admin-menu.php:434 327 msgid "Export Media" 328 msgstr "" 329 330 #: includes/class-admin-menu.php:432 331 msgid "Export all media files with their metadata as a ZIP file." 332 msgstr "" 333 334 #: includes/class-admin-menu.php:439 335 msgid "Import Media" 336 msgstr "" 337 338 #: includes/class-admin-menu.php:440 339 msgid "Import media files from a previously exported ZIP file. Maximum file size: 500MB." 340 msgstr "" 341 342 #: includes/class-admin-menu.php:444 includes/class-admin-menu.php:858 343 #: includes/class-admin-menu.php:941 344 msgid "Select ZIP File" 345 msgstr "" 346 347 #: includes/class-admin-menu.php:462 348 msgid "Delete Media" 349 msgstr "" 350 351 #: includes/class-admin-menu.php:463 352 msgid "⚠️ Warning: This will permanently delete all media files from the library. This action cannot be undone." 353 msgstr "" 354 355 #: includes/class-admin-menu.php:465 356 msgid "Delete All Media" 357 msgstr "" 358 359 #: includes/class-admin-menu.php:481 360 msgid "System Test" 361 msgstr "" 362 363 #: includes/class-admin-menu.php:482 364 msgid "Test your server configuration to ensure compatibility." 365 msgstr "" 366 367 #: includes/class-admin-menu.php:484 368 msgid "Test Configuration" 369 msgstr "" 370 371 #: includes/class-admin-menu.php:491 372 msgid "How to Use This Plugin" 373 msgstr "" 374 375 #: includes/class-admin-menu.php:492 376 msgid "Follow these steps for successful export and import with all images intact:" 377 msgstr "" 378 379 #: includes/class-admin-menu.php:500 380 msgid "Export Media Files" 381 msgstr "" 382 383 #: includes/class-admin-menu.php:504 384 msgid "Start by exporting all your media files using the \"Export Media\" button above. This will create a ZIP file containing your images, videos, and documents." 385 msgstr "" 386 387 #: includes/class-admin-menu.php:510 388 msgid "If your images are still available on the live site, you can enable \"Download missing images from original URLs\". This option downloads media directly from their original sources instead of the export file. Note that this may take more time. For faster imports, export the media first and keep this option unchecked." 389 msgstr "" 390 391 #: includes/class-admin-menu.php:522 392 msgid "Next, export your posts using the \"Export Posts\" button. This creates a JSON file with all post content and image references." 393 msgstr "" 394 395 #: includes/class-admin-menu.php:529 396 msgid "Import Media First" 397 msgstr "" 398 399 #: includes/class-admin-menu.php:530 400 msgid "On your destination site, import the media ZIP file first. This ensures all images are available before importing posts." 401 msgstr "" 402 403 #: includes/class-admin-menu.php:537 404 msgid "Import Posts Last" 405 msgstr "" 406 407 #: includes/class-admin-menu.php:538 408 msgid "Finally, import the posts JSON file. The plugin will automatically link posts to the previously imported images." 409 msgstr "" 410 411 #: includes/class-admin-menu.php:544 412 msgid "Pro Tips" 413 msgstr "" 414 415 #: includes/class-admin-menu.php:546 416 msgid "✓ Always import media before posts for complete image restoration" 417 msgstr "" 418 419 #: includes/class-admin-menu.php:547 420 msgid "✓ The plugin will show which images are missing during post import" 421 msgstr "" 422 423 #: includes/class-admin-menu.php:548 424 msgid "✓ Run the System Test first to ensure your server can handle large files" 425 msgstr "" 426 427 #: includes/class-admin-menu.php:549 428 msgid "✓ Existing images with the same filename will be reused automatically" 429 msgstr "" 430 431 #: includes/class-admin-menu.php:550 432 msgid "✓ If you enable \"Download missing images from original URLs\" and ensure the source site is live, media will be fetched directly from the original URLs. This means you won’t need to import media files separately, though the process may take additional time to download and complete." 433 msgstr "" 434 435 #: includes/class-admin-menu.php:579 includes/class-admin-menu.php:582 436 msgid "Export Pages" 437 msgstr "" 438 439 #: includes/class-admin-menu.php:580 440 msgid "Export all pages with their metadata, featured images, and hierarchy." 441 msgstr "" 442 443 #: includes/class-admin-menu.php:587 444 msgid "Import Pages" 445 msgstr "" 446 447 #: includes/class-admin-menu.php:588 448 msgid "Import pages from a previously exported JSON file." 449 msgstr "" 450 451 #: includes/class-admin-menu.php:622 includes/class-admin-menu.php:625 497 #: includes/class-admin-menu.php:672 includes/class-admin-menu.php:675 452 498 msgid "Delete All Pages" 453 499 msgstr "" 454 500 455 #: includes/class-admin-menu.php:6 23501 #: includes/class-admin-menu.php:673 456 502 msgid "Permanently delete all pages from your website. This action cannot be undone." 457 503 msgstr "" 458 504 459 #: includes/class-admin-menu.php:6 29505 #: includes/class-admin-menu.php:679 460 506 msgid "Deletion Progress" 461 507 msgstr "" 462 508 463 #: includes/class-admin-menu.php: 655 includes/class-admin-menu.php:660509 #: includes/class-admin-menu.php:705 includes/class-admin-menu.php:710 464 510 msgid "WordPress Settings Export/Import" 465 511 msgstr "" 466 512 467 #: includes/class-admin-menu.php: 663 includes/class-admin-menu.php:701513 #: includes/class-admin-menu.php:713 includes/class-admin-menu.php:751 468 514 msgid "Export Settings" 469 515 msgstr "" 470 516 471 #: includes/class-admin-menu.php: 664517 #: includes/class-admin-menu.php:714 472 518 msgid "Export WordPress configuration settings from General, Writing, Reading, Discussion, Media, Permalinks, and Privacy sections." 473 519 msgstr "" 474 520 475 #: includes/class-admin-menu.php: 667521 #: includes/class-admin-menu.php:717 476 522 msgid "Select Settings Groups to Export:" 477 523 msgstr "" 478 524 479 #: includes/class-admin-menu.php: 671 includes/class-settings-handler.php:418525 #: includes/class-admin-menu.php:721 includes/class-settings-handler.php:418 480 526 msgid "General Settings" 481 527 msgstr "" 482 528 483 #: includes/class-admin-menu.php: 675 includes/class-settings-handler.php:423529 #: includes/class-admin-menu.php:725 includes/class-settings-handler.php:423 484 530 msgid "Writing Settings" 485 531 msgstr "" 486 532 487 #: includes/class-admin-menu.php: 679 includes/class-settings-handler.php:428533 #: includes/class-admin-menu.php:729 includes/class-settings-handler.php:428 488 534 msgid "Reading Settings" 489 535 msgstr "" 490 536 491 #: includes/class-admin-menu.php: 683 includes/class-settings-handler.php:433537 #: includes/class-admin-menu.php:733 includes/class-settings-handler.php:433 492 538 msgid "Discussion Settings" 493 539 msgstr "" 494 540 495 #: includes/class-admin-menu.php: 687 includes/class-settings-handler.php:438541 #: includes/class-admin-menu.php:737 includes/class-settings-handler.php:438 496 542 msgid "Media Settings" 497 543 msgstr "" 498 544 499 #: includes/class-admin-menu.php: 691 includes/class-settings-handler.php:443545 #: includes/class-admin-menu.php:741 includes/class-settings-handler.php:443 500 546 msgid "Permalink Settings" 501 547 msgstr "" 502 548 503 #: includes/class-admin-menu.php: 695 includes/class-settings-handler.php:448549 #: includes/class-admin-menu.php:745 includes/class-settings-handler.php:448 504 550 msgid "Privacy Settings" 505 551 msgstr "" 506 552 507 #: includes/class-admin-menu.php:7 06553 #: includes/class-admin-menu.php:756 508 554 msgid "Import Settings" 509 555 msgstr "" 510 556 511 #: includes/class-admin-menu.php:7 07557 #: includes/class-admin-menu.php:757 512 558 msgid "Import WordPress settings from a previously exported JSON file." 513 559 msgstr "" 514 560 515 #: includes/class-admin-menu.php:7 19561 #: includes/class-admin-menu.php:769 516 562 msgid "Settings Preview & Selection:" 517 563 msgstr "" 518 564 519 #: includes/class-admin-menu.php:7 36565 #: includes/class-admin-menu.php:786 520 566 msgid "Widgets & Navigation Menus" 521 567 msgstr "" 522 568 523 #: includes/class-admin-menu.php:7 39569 #: includes/class-admin-menu.php:789 524 570 msgid "Export Widgets & Menus" 525 571 msgstr "" 526 572 527 #: includes/class-admin-menu.php:7 40573 #: includes/class-admin-menu.php:790 528 574 msgid "Export your widgets and navigation menus configuration." 529 575 msgstr "" 530 576 531 #: includes/class-admin-menu.php:7 44577 #: includes/class-admin-menu.php:794 532 578 msgid "Export Widgets Only" 533 579 msgstr "" 534 580 535 #: includes/class-admin-menu.php:7 47581 #: includes/class-admin-menu.php:797 536 582 msgid "Export Menus Only" 537 583 msgstr "" 538 584 539 #: includes/class-admin-menu.php: 750585 #: includes/class-admin-menu.php:800 540 586 msgid "Export Both" 541 587 msgstr "" 542 588 543 #: includes/class-admin-menu.php: 756589 #: includes/class-admin-menu.php:806 544 590 msgid "Import Widgets & Menus" 545 591 msgstr "" 546 592 547 #: includes/class-admin-menu.php: 757593 #: includes/class-admin-menu.php:807 548 594 msgid "Import widgets and navigation menus from a previously exported JSON file." 549 595 msgstr "" 550 596 551 #: includes/class-admin-menu.php: 773597 #: includes/class-admin-menu.php:823 552 598 msgid "Replace existing widgets and menus" 553 599 msgstr "" 554 600 555 #: includes/class-admin-menu.php: 774601 #: includes/class-admin-menu.php:824 556 602 msgid "Clear existing widgets and menus before importing" 557 603 msgstr "" 558 604 559 #: includes/class-admin-menu.php:8 12605 #: includes/class-admin-menu.php:862 560 606 msgid "Themes Backup" 561 607 msgstr "" 562 608 563 #: includes/class-admin-menu.php:8 15 includes/class-admin-menu.php:838609 #: includes/class-admin-menu.php:865 includes/class-admin-menu.php:888 564 610 msgid "Export Themes" 565 611 msgstr "" 566 612 567 #: includes/class-admin-menu.php:8 16613 #: includes/class-admin-menu.php:866 568 614 msgid "Create a backup of your themes as a ZIP file." 569 615 msgstr "" 570 616 571 #: includes/class-admin-menu.php:8 21617 #: includes/class-admin-menu.php:871 572 618 msgid "Active Theme Only" 573 619 msgstr "" 574 620 575 #: includes/class-admin-menu.php:8 25621 #: includes/class-admin-menu.php:875 576 622 msgid "All Installed Themes" 577 623 msgstr "" 578 624 579 #: includes/class-admin-menu.php:8 29625 #: includes/class-admin-menu.php:879 580 626 msgid "Selected Themes" 581 627 msgstr "" 582 628 583 #: includes/class-admin-menu.php:8 42 includes/class-admin-menu.php:925629 #: includes/class-admin-menu.php:892 includes/class-admin-menu.php:975 584 630 msgid "Export Progress" 585 631 msgstr "" 586 632 587 #: includes/class-admin-menu.php: 852633 #: includes/class-admin-menu.php:902 588 634 msgid "Import Themes" 589 635 msgstr "" 590 636 591 #: includes/class-admin-menu.php: 853637 #: includes/class-admin-menu.php:903 592 638 msgid "Import themes from a previously exported ZIP file." 593 639 msgstr "" 594 640 595 #: includes/class-admin-menu.php: 869641 #: includes/class-admin-menu.php:919 596 642 msgid "Replace existing themes" 597 643 msgstr "" 598 644 599 #: includes/class-admin-menu.php: 870645 #: includes/class-admin-menu.php:920 600 646 msgid "Overwrite themes that already exist" 601 647 msgstr "" 602 648 603 #: includes/class-admin-menu.php: 876649 #: includes/class-admin-menu.php:926 604 650 msgid "Activate imported theme" 605 651 msgstr "" 606 652 607 #: includes/class-admin-menu.php: 877653 #: includes/class-admin-menu.php:927 608 654 msgid "Switch to the first imported theme" 609 655 msgstr "" 610 656 611 #: includes/class-admin-menu.php: 895657 #: includes/class-admin-menu.php:945 612 658 msgid "Plugins Backup" 613 659 msgstr "" 614 660 615 #: includes/class-admin-menu.php: 898 includes/class-admin-menu.php:921661 #: includes/class-admin-menu.php:948 includes/class-admin-menu.php:971 616 662 msgid "Export Plugins" 617 663 msgstr "" 618 664 619 #: includes/class-admin-menu.php: 899665 #: includes/class-admin-menu.php:949 620 666 msgid "Create a backup of your plugins as a ZIP file." 621 667 msgstr "" 622 668 623 #: includes/class-admin-menu.php:9 04669 #: includes/class-admin-menu.php:954 624 670 msgid "Active Plugins Only" 625 671 msgstr "" 626 672 627 #: includes/class-admin-menu.php:9 08673 #: includes/class-admin-menu.php:958 628 674 msgid "All Installed Plugins" 629 675 msgstr "" 630 676 631 #: includes/class-admin-menu.php:9 12677 #: includes/class-admin-menu.php:962 632 678 msgid "Selected Plugins" 633 679 msgstr "" 634 680 635 #: includes/class-admin-menu.php:9 35681 #: includes/class-admin-menu.php:985 636 682 msgid "Import Plugins" 637 683 msgstr "" 638 684 639 #: includes/class-admin-menu.php:9 36685 #: includes/class-admin-menu.php:986 640 686 msgid "Import plugins from a previously exported ZIP file." 641 687 msgstr "" 642 688 643 #: includes/class-admin-menu.php: 952689 #: includes/class-admin-menu.php:1002 644 690 msgid "Replace existing plugins" 645 691 msgstr "" 646 692 647 #: includes/class-admin-menu.php: 953693 #: includes/class-admin-menu.php:1003 648 694 msgid "Overwrite plugins that already exist" 649 695 msgstr "" 650 696 651 #: includes/class-admin-menu.php: 959697 #: includes/class-admin-menu.php:1009 652 698 msgid "Activate imported plugins" 653 699 msgstr "" 654 700 655 #: includes/class-admin-menu.php: 960701 #: includes/class-admin-menu.php:1010 656 702 msgid "Automatically activate plugins after import" 657 703 msgstr "" 658 704 659 #: includes/class-admin-menu.php: 978705 #: includes/class-admin-menu.php:1028 includes/class-scheduled-exports.php:969 660 706 msgid "Settings" 661 707 msgstr "" 662 708 663 #: includes/class-admin-menu.php: 985709 #: includes/class-admin-menu.php:1035 664 710 msgid "Admin Download Buttons" 665 711 msgstr "" 666 712 667 #: includes/class-admin-menu.php: 988713 #: includes/class-admin-menu.php:1038 668 714 msgid "Add download buttons to WordPress Themes and Plugins pages" 669 715 msgstr "" 670 716 671 #: includes/class-admin-menu.php: 991717 #: includes/class-admin-menu.php:1041 672 718 msgid "When enabled, download buttons will appear on the Appearance > Themes and Plugins pages, allowing you to download individual themes and plugins as ZIP files." 673 719 msgstr "" 674 720 675 #: includes/class-admin-menu.php:10 21721 #: includes/class-admin-menu.php:1071 676 722 msgid "Discover powerful plugins to enhance your WordPress experience and boost your site's functionality" 677 723 msgstr "" 678 724 679 #: includes/class-admin-menu.php:10 43725 #: includes/class-admin-menu.php:1093 680 726 msgid "Confirmation" 681 727 msgstr "" 682 728 683 #: includes/class-admin-menu.php:10 47729 #: includes/class-admin-menu.php:1097 684 730 msgid "Are you sure you want to proceed?" 685 731 msgstr "" 686 732 687 #: includes/class-admin-menu.php:1 051733 #: includes/class-admin-menu.php:1101 includes/class-scheduled-exports.php:1127 688 734 msgid "Cancel" 689 735 msgstr "" 690 736 691 #: includes/class-admin-menu.php:1 054737 #: includes/class-admin-menu.php:1104 692 738 msgid "Confirm" 693 739 msgstr "" 694 740 695 #: includes/class-admin-menu.php:1 069741 #: includes/class-admin-menu.php:1119 696 742 msgid "Operation completed successfully!" 697 743 msgstr "" 698 744 699 #: includes/class-admin-menu.php:1 073745 #: includes/class-admin-menu.php:1123 700 746 msgid "OK" 701 747 msgstr "" 702 748 703 #: includes/class-admin-menu.php:1 083749 #: includes/class-admin-menu.php:1133 704 750 msgid "Error" 705 751 msgstr "" 706 752 707 #: includes/class-admin-menu.php:1 088753 #: includes/class-admin-menu.php:1138 708 754 msgid "An error occurred." 709 755 msgstr "" 710 756 711 #: includes/class-admin-menu.php:1 092757 #: includes/class-admin-menu.php:1142 712 758 msgid "Close" 713 759 msgstr "" 714 760 715 #: includes/class-ajax-handler.php:9 3761 #: includes/class-ajax-handler.php:96 716 762 msgid "System test failed" 717 763 msgstr "" 718 764 719 #: includes/class-ajax-handler.php:128 765 #: includes/class-ajax-handler.php:124 766 msgid "Failed to get content statistics" 767 msgstr "" 768 769 #: includes/class-ajax-handler.php:159 720 770 msgid "Failed to initialize filesystem" 721 771 msgstr "" 722 772 723 #: includes/class-ajax-handler.php: 173773 #: includes/class-ajax-handler.php:204 724 774 msgid "Failed to get media statistics" 725 775 msgstr "" 726 776 727 #: includes/class-ajax-handler.php: 192 includes/class-ajax-handler.php:229777 #: includes/class-ajax-handler.php:223 includes/class-ajax-handler.php:260 728 778 msgid "File not specified" 729 779 msgstr "" 730 780 731 #: includes/class-ajax-handler.php: 199 includes/class-ajax-handler.php:236781 #: includes/class-ajax-handler.php:230 includes/class-ajax-handler.php:267 732 782 msgid "File not found" 783 msgstr "" 784 785 #: includes/class-batch-processor.php:93 786 msgid "No posts found to export" 787 msgstr "" 788 789 #: includes/class-batch-processor.php:118 790 #: includes/class-batch-processor.php:265 791 #: includes/class-batch-processor.php:428 792 msgid "Failed to start batch export" 793 msgstr "" 794 795 #: includes/class-batch-processor.php:139 796 #: includes/class-batch-processor.php:286 797 #: includes/class-batch-processor.php:449 798 #: includes/class-batch-processor.php:627 799 #: includes/class-batch-processor.php:743 includes/class-media-handler.php:332 800 msgid "Invalid batch ID" 801 msgstr "" 802 803 #: includes/class-batch-processor.php:145 804 #: includes/class-batch-processor.php:292 805 #: includes/class-batch-processor.php:455 806 #: includes/class-batch-processor.php:633 807 #: includes/class-batch-processor.php:749 808 msgid "Batch session expired" 809 msgstr "" 810 811 #: includes/class-batch-processor.php:191 812 #: includes/class-batch-processor.php:337 813 #: includes/class-batch-processor.php:467 includes/class-media-handler.php:107 814 msgid "Could not create export directory" 815 msgstr "" 816 817 #: includes/class-batch-processor.php:199 818 #: includes/class-batch-processor.php:345 819 msgid "Failed to write export file" 820 msgstr "" 821 822 #: includes/class-batch-processor.php:240 823 msgid "No pages found to export" 824 msgstr "" 825 826 #: includes/class-batch-processor.php:382 includes/class-media-handler.php:89 827 msgid "ZipArchive extension is required" 828 msgstr "" 829 830 #: includes/class-batch-processor.php:394 includes/class-media-handler.php:100 831 msgid "No media files found to export" 832 msgstr "" 833 834 #: includes/class-batch-processor.php:475 includes/class-media-handler.php:115 835 msgid "Could not create ZIP file" 836 msgstr "" 837 838 #: includes/class-batch-processor.php:525 839 msgid "No valid media files found in this batch" 840 msgstr "" 841 842 #: includes/class-batch-processor.php:564 843 msgid "No posts data provided" 844 msgstr "" 845 846 #: includes/class-batch-processor.php:570 847 #: includes/class-batch-processor.php:686 includes/class-page-handler.php:155 848 #: includes/class-page-handler.php:621 includes/class-post-handler.php:156 849 #: includes/class-post-handler.php:303 includes/class-settings-handler.php:245 850 #: includes/class-widgets-menus-handler.php:260 851 #: includes/class-widgets-menus-handler.php:302 852 #: includes/class-widgets-menus-handler.php:344 853 msgid "Invalid JSON data provided" 854 msgstr "" 855 856 #: includes/class-batch-processor.php:574 857 msgid "Invalid posts data format" 858 msgstr "" 859 860 #: includes/class-batch-processor.php:680 861 msgid "No pages data provided" 862 msgstr "" 863 864 #: includes/class-batch-processor.php:690 865 msgid "Invalid pages data format" 866 msgstr "" 867 868 #: includes/class-batch-processor.php:944 869 msgid "Invalid images data" 870 msgstr "" 871 872 #: includes/class-batch-settings.php:93 includes/class-batch-settings.php:94 873 msgid "Batch Settings" 874 msgstr "" 875 876 #: includes/class-batch-settings.php:285 877 msgid "Batch Processing Settings" 878 msgstr "" 879 880 #: includes/class-batch-settings.php:289 881 msgid "Configure batch processing for large-scale import/export operations. Please note that importing posts is a resource-intensive process, as it needs to detect and process all associated images, post formatting, WordPress tags, categories, attributes, and other metadata. For better performance and server stability, bulk import with batch processing is highly recommended." 882 msgstr "" 883 884 #: includes/class-batch-settings.php:305 885 msgid "Enable Batch Processing" 886 msgstr "" 887 888 #: includes/class-batch-settings.php:320 889 msgid "Enable this to process large-scale operations in batches. " 890 msgstr "" 891 892 #: includes/class-batch-settings.php:323 893 msgid "FREE" 894 msgstr "" 895 896 #: includes/class-batch-settings.php:324 897 msgid "Available in free version" 898 msgstr "" 899 900 #: includes/class-batch-settings.php:341 901 #: includes/class-scheduled-exports.php:883 902 #: includes/class-scheduled-exports.php:918 903 msgid "Upgrade to PRO" 904 msgstr "" 905 906 #: includes/class-batch-settings.php:346 907 msgid "Batch Configuration" 908 msgstr "" 909 910 #: includes/class-batch-settings.php:358 911 msgid "Posts Batch Size" 912 msgstr "" 913 914 #: includes/class-batch-settings.php:374 915 msgid "Number of posts per batch file. Default: 100 (Range: 10-10,000)" 916 msgstr "" 917 918 #: includes/class-batch-settings.php:375 919 msgid "For 100K+ posts: Use 1000-5000" 920 msgstr "" 921 922 #: includes/class-batch-settings.php:384 923 msgid "Pages Batch Size" 924 msgstr "" 925 926 #: includes/class-batch-settings.php:400 927 msgid "Number of pages per batch file. Default: 100 (Range: 10-10,000)" 928 msgstr "" 929 930 #: includes/class-batch-settings.php:401 931 msgid "For 10K+ pages: Use 1000-5000" 932 msgstr "" 933 934 #: includes/class-batch-settings.php:410 935 msgid "Concurrent Requests" 936 msgstr "" 937 938 #: includes/class-batch-settings.php:427 939 msgid "How many posts/pages to process simultaneously. Default: 50 (Range: 5-200)" 940 msgstr "" 941 942 #: includes/class-batch-settings.php:428 943 msgid "⚡ This is the KEY setting for speed!" 944 msgstr "" 945 946 #: includes/class-batch-settings.php:429 947 msgid "• Small server (shared hosting): 5-10" 948 msgstr "" 949 950 #: includes/class-batch-settings.php:430 951 msgid "• Medium server (VPS): 20-80" 952 msgstr "" 953 954 #: includes/class-batch-settings.php:431 955 msgid "• Powerful server (dedicated): 100-200" 956 msgstr "" 957 958 #: includes/class-batch-settings.php:432 959 msgid "• With 100 concurrent: 100K posts in ~20 minutes (vs 50+ hours sequential)" 960 msgstr "" 961 962 #: includes/class-batch-settings.php:441 963 msgid "Media Files Batch Size" 964 msgstr "" 965 966 #: includes/class-batch-settings.php:457 967 msgid "Number of media files per batch. Default: 50 (Range: 10-1000)" 968 msgstr "" 969 970 #: includes/class-batch-settings.php:466 971 msgid "Media ZIP Size Limit (MB)" 972 msgstr "" 973 974 #: includes/class-batch-settings.php:483 975 msgid "Maximum size for each media ZIP file. Default: 50MB (Range: 10-500MB)" 976 msgstr "" 977 978 #: includes/class-batch-settings.php:492 979 msgid "Batch Delay (ms)" 980 msgstr "" 981 982 #: includes/class-batch-settings.php:509 983 msgid "Delay between batches to prevent server overload. Default: 200ms (Range: 0-5000ms)" 984 msgstr "" 985 986 #: includes/class-batch-settings.php:510 987 msgid "• Powerful server: 0-100ms (no delay needed)" 988 msgstr "" 989 990 #: includes/class-batch-settings.php:511 991 msgid "• Shared hosting: 500-1000ms (prevent throttling)" 992 msgstr "" 993 994 #: includes/class-batch-settings.php:520 995 msgid "📊 Recommended Settings Based on Your Content" 996 msgstr "" 997 998 #: includes/class-batch-settings.php:522 999 msgid "Loading content statistics..." 1000 msgstr "" 1001 1002 #: includes/class-batch-settings.php:527 1003 #: includes/class-scheduled-exports.php:1088 1004 msgid "Save Settings" 733 1005 msgstr "" 734 1006 … … 778 1050 #: includes/class-generic-recommendations.php:565 779 1051 msgid "This plugin doesn’t work with your version of PHP." 780 msgstr ""781 782 #: includes/class-media-handler.php:89783 msgid "ZipArchive extension is required"784 msgstr ""785 786 #: includes/class-media-handler.php:100787 msgid "No media files found to export"788 msgstr ""789 790 #: includes/class-media-handler.php:107791 msgid "Could not create export directory"792 msgstr ""793 794 #: includes/class-media-handler.php:115795 msgid "Could not create ZIP file"796 1052 msgstr "" 797 1053 … … 854 1110 msgstr "" 855 1111 856 #: includes/class-media-handler.php:332857 msgid "Invalid batch ID"858 msgstr ""859 860 1112 #: includes/class-media-handler.php:338 861 1113 msgid "Batch not found or expired" … … 889 1141 msgstr "" 890 1142 891 #: includes/class-media-handler.php:454 includes/class-page-handler.php:3 14892 #: includes/class-post-handler.php:4 001143 #: includes/class-media-handler.php:454 includes/class-page-handler.php:327 1144 #: includes/class-post-handler.php:417 893 1145 msgid "Delete operation failed. Please try again." 894 1146 msgstr "" … … 962 1214 msgstr "" 963 1215 964 #: includes/class-page-handler.php:1 371216 #: includes/class-page-handler.php:149 965 1217 msgid "No page data provided" 966 1218 msgstr "" 967 1219 968 #: includes/class-page-handler.php:143 includes/class-page-handler.php:608 969 #: includes/class-post-handler.php:143 includes/class-post-handler.php:286 970 #: includes/class-settings-handler.php:245 971 #: includes/class-widgets-menus-handler.php:258 972 #: includes/class-widgets-menus-handler.php:298 973 #: includes/class-widgets-menus-handler.php:338 974 msgid "Invalid JSON data provided" 975 msgstr "" 976 977 #: includes/class-page-handler.php:147 1220 #: includes/class-page-handler.php:159 978 1221 msgid "Invalid page data" 979 1222 msgstr "" 980 1223 981 #: includes/class-page-handler.php:1 641224 #: includes/class-page-handler.php:176 982 1225 msgid "Page already exists" 983 1226 msgstr "" 984 1227 985 #: includes/class-page-handler.php: 1881228 #: includes/class-page-handler.php:200 986 1229 #, php-format 987 1230 msgid "Failed to create page: %s" 988 1231 msgstr "" 989 1232 990 #: includes/class-page-handler.php:2 51 includes/class-post-handler.php:2591233 #: includes/class-page-handler.php:264 includes/class-post-handler.php:271 991 1234 msgid "Import failed. Please check the file format." 992 1235 msgstr "" 993 1236 994 #: includes/class-page-handler.php:2 761237 #: includes/class-page-handler.php:289 995 1238 msgid "No pages found to delete" 996 1239 msgstr "" 997 1240 998 #: includes/class-page-handler.php: 2951241 #: includes/class-page-handler.php:308 999 1242 #, php-format 1000 1243 msgid "Deleted %d pages successfully" 1001 1244 msgstr "" 1002 1245 1003 #: includes/class-page-handler.php:3 011246 #: includes/class-page-handler.php:314 1004 1247 #, php-format 1005 1248 msgid ". Failed to delete %d pages." 1006 1249 msgstr "" 1007 1250 1008 #: includes/class-page-handler.php:6 02 includes/class-post-handler.php:2801251 #: includes/class-page-handler.php:615 includes/class-post-handler.php:297 1009 1252 msgid "No image data provided" 1010 1253 msgstr "" 1011 1254 1012 #: includes/class-page-handler.php:6 12 includes/class-post-handler.php:2901255 #: includes/class-page-handler.php:625 includes/class-post-handler.php:307 1013 1256 msgid "Invalid image data" 1014 1257 msgstr "" 1015 1258 1016 #: includes/class-page-handler.php:6 17 includes/class-post-handler.php:2951259 #: includes/class-page-handler.php:630 includes/class-post-handler.php:312 1017 1260 msgid "No filename provided" 1018 1261 msgstr "" 1019 1262 1020 #: includes/class-post-handler.php:1 371263 #: includes/class-post-handler.php:150 1021 1264 msgid "No post data provided" 1022 1265 msgstr "" 1023 1266 1024 #: includes/class-post-handler.php:1 471267 #: includes/class-post-handler.php:160 1025 1268 msgid "Invalid post data" 1026 1269 msgstr "" 1027 1270 1028 #: includes/class-post-handler.php:1 641271 #: includes/class-post-handler.php:176 1029 1272 msgid "Post already exists" 1030 1273 msgstr "" 1031 1274 1032 #: includes/class-post-handler.php:1 861275 #: includes/class-post-handler.php:194 1033 1276 #, php-format 1034 1277 msgid "Failed to create post: %s" 1035 1278 msgstr "" 1036 1279 1037 #: includes/class-post-handler.php:3 621280 #: includes/class-post-handler.php:379 1038 1281 msgid "No posts found to delete" 1039 1282 msgstr "" 1040 1283 1041 #: includes/class-post-handler.php:3 811284 #: includes/class-post-handler.php:398 1042 1285 #, php-format 1043 1286 msgid "Deleted %d posts successfully" 1044 1287 msgstr "" 1045 1288 1046 #: includes/class-post-handler.php: 3871289 #: includes/class-post-handler.php:404 1047 1290 #, php-format 1048 1291 msgid ". Failed to delete %d posts." 1292 msgstr "" 1293 1294 #: includes/class-scheduled-exports.php:158 1295 msgid "Once Weekly" 1296 msgstr "" 1297 1298 #: includes/class-scheduled-exports.php:164 1299 msgid "Once Monthly" 1300 msgstr "" 1301 1302 #: includes/class-scheduled-exports.php:682 1303 #, php-format 1304 msgid "[%s] Scheduled Export Completed" 1305 msgstr "" 1306 1307 #: includes/class-scheduled-exports.php:686 1308 msgid "Your scheduled export has completed successfully." 1309 msgstr "" 1310 1311 #: includes/class-scheduled-exports.php:687 1312 msgid "Exported files:" 1313 msgstr "" 1314 1315 #: includes/class-scheduled-exports.php:691 1316 msgid "Storage location:" 1317 msgstr "" 1318 1319 #: includes/class-scheduled-exports.php:797 1320 #: includes/class-scheduled-exports.php:798 1321 #: includes/class-scheduled-exports.php:866 1322 msgid "Scheduled Exports" 1323 msgstr "" 1324 1325 #: includes/class-scheduled-exports.php:868 1326 msgid "Automate your backups with scheduled exports. Set it and forget it!" 1327 msgstr "" 1328 1329 #: includes/class-scheduled-exports.php:887 1330 msgid "Enable Scheduled Exports" 1331 msgstr "" 1332 1333 #: includes/class-scheduled-exports.php:900 1334 msgid "Enable automatic scheduled exports of your content." 1335 msgstr "" 1336 1337 #: includes/class-scheduled-exports.php:904 1338 msgid "Next scheduled run:" 1339 msgstr "" 1340 1341 #: includes/class-scheduled-exports.php:925 1342 msgid "Schedule Frequency" 1343 msgstr "" 1344 1345 #: includes/class-scheduled-exports.php:930 1346 msgid "Daily" 1347 msgstr "" 1348 1349 #: includes/class-scheduled-exports.php:931 1350 msgid "Export once every day" 1351 msgstr "" 1352 1353 #: includes/class-scheduled-exports.php:937 1354 msgid "Weekly" 1355 msgstr "" 1356 1357 #: includes/class-scheduled-exports.php:938 1358 msgid "Export once every week" 1359 msgstr "" 1360 1361 #: includes/class-scheduled-exports.php:944 1362 msgid "Monthly" 1363 msgstr "" 1364 1365 #: includes/class-scheduled-exports.php:945 1366 msgid "Export once every month" 1367 msgstr "" 1368 1369 #: includes/class-scheduled-exports.php:953 1370 msgid "What to Export" 1371 msgstr "" 1372 1373 #: includes/class-scheduled-exports.php:957 1374 msgid "Posts" 1375 msgstr "" 1376 1377 #: includes/class-scheduled-exports.php:961 1378 msgid "Pages" 1379 msgstr "" 1380 1381 #: includes/class-scheduled-exports.php:965 1382 msgid "Media" 1383 msgstr "" 1384 1385 #: includes/class-scheduled-exports.php:976 1386 msgid "Email Notifications" 1387 msgstr "" 1388 1389 #: includes/class-scheduled-exports.php:989 1390 msgid "Send email notifications when exports complete." 1391 msgstr "" 1392 1393 #: includes/class-scheduled-exports.php:994 1394 msgid "Email Addresses" 1395 msgstr "" 1396 1397 #: includes/class-scheduled-exports.php:1005 1398 msgid "Enter email addresses separated by commas. Leave empty to use admin email:" 1399 msgstr "" 1400 1401 #: includes/class-scheduled-exports.php:1013 1402 msgid "Backup Rotation" 1403 msgstr "" 1404 1405 #: includes/class-scheduled-exports.php:1026 1406 msgid "Automatically delete old backups to save space." 1407 msgstr "" 1408 1409 #: includes/class-scheduled-exports.php:1031 1410 msgid "Keep Last N Backups" 1411 msgstr "" 1412 1413 #: includes/class-scheduled-exports.php:1044 1414 msgid "Number of recent backups to keep. Older backups will be automatically deleted. (Range: 1-100)" 1415 msgstr "" 1416 1417 #: includes/class-scheduled-exports.php:1051 1418 msgid "Storage Mode" 1419 msgstr "" 1420 1421 #: includes/class-scheduled-exports.php:1057 1422 msgid "Local Storage" 1423 msgstr "" 1424 1425 #: includes/class-scheduled-exports.php:1058 1426 msgid "Save backups to your server" 1427 msgstr "" 1428 1429 #: includes/class-scheduled-exports.php:1059 1430 msgid "Active" 1431 msgstr "" 1432 1433 #: includes/class-scheduled-exports.php:1066 1434 msgid "Google Drive" 1435 msgstr "" 1436 1437 #: includes/class-scheduled-exports.php:1067 1438 msgid "Save backups to Google Drive" 1439 msgstr "" 1440 1441 #: includes/class-scheduled-exports.php:1068 1442 msgid "Coming Soon" 1443 msgstr "" 1444 1445 #: includes/class-scheduled-exports.php:1076 1446 msgid "Local Storage Path" 1447 msgstr "" 1448 1449 #: includes/class-scheduled-exports.php:1079 1450 msgid "Backups are stored in your WordPress uploads directory for security and easy access." 1451 msgstr "" 1452 1453 #: includes/class-scheduled-exports.php:1095 1454 msgid "Existing Backups" 1455 msgstr "" 1456 1457 #: includes/class-scheduled-exports.php:1096 1458 msgid "Manage your scheduled export backups." 1459 msgstr "" 1460 1461 #: includes/class-scheduled-exports.php:1099 1462 msgid "Refresh List" 1463 msgstr "" 1464 1465 #: includes/class-scheduled-exports.php:1105 1466 msgid "Loading backups..." 1467 msgstr "" 1468 1469 #: includes/class-scheduled-exports.php:1116 1470 #: includes/class-scheduled-exports.php:1130 1471 msgid "Delete Backup" 1472 msgstr "" 1473 1474 #: includes/class-scheduled-exports.php:1121 1475 msgid "Are you sure you want to delete this backup?" 1476 msgstr "" 1477 1478 #: includes/class-scheduled-exports.php:1123 1479 msgid "This action cannot be undone." 1049 1480 msgstr "" 1050 1481 … … 1207 1638 msgstr "" 1208 1639 1209 #: includes/class-widgets-menus-handler.php:25 21640 #: includes/class-widgets-menus-handler.php:254 1210 1641 msgid "No widgets data provided" 1211 1642 msgstr "" 1212 1643 1213 #: includes/class-widgets-menus-handler.php:29 21644 #: includes/class-widgets-menus-handler.php:296 1214 1645 msgid "No menus data provided" 1215 1646 msgstr "" 1216 1647 1217 #: includes/class-widgets-menus-handler.php:33 21648 #: includes/class-widgets-menus-handler.php:338 1218 1649 msgid "No data provided" 1219 1650 msgstr "" 1220 1651 1221 #: includes/class-widgets-menus-handler.php:3 581652 #: includes/class-widgets-menus-handler.php:364 1222 1653 #, php-format 1223 1654 msgid "Import completed: %d widgets and %d menus imported" 1224 1655 msgstr "" 1225 1656 1226 #: includes/class-widgets-menus-handler.php:49 21657 #: includes/class-widgets-menus-handler.php:498 1227 1658 msgid "No widgets data found" 1228 1659 msgstr "" 1229 1660 1230 #: includes/class-widgets-menus-handler.php:5 451661 #: includes/class-widgets-menus-handler.php:551 1231 1662 #, php-format 1232 1663 msgid "Widgets import completed: %d imported, %d skipped, %d failed" 1233 1664 msgstr "" 1234 1665 1235 #: includes/class-widgets-menus-handler.php:5 741666 #: includes/class-widgets-menus-handler.php:580 1236 1667 msgid "No menus data found" 1237 1668 msgstr "" 1238 1669 1239 #: includes/class-widgets-menus-handler.php:64 21670 #: includes/class-widgets-menus-handler.php:648 1240 1671 #, php-format 1241 1672 msgid "Navigation menus import completed: %d imported, %d skipped, %d failed" -
post-export-import-with-media/trunk/post-export-import-with-media.php
r3441984 r3460903 12 12 * Plugin URI: https://wordpress.org/plugins/post-export-import-with-media/ 13 13 * Description: Post Export Import with Media: A secure plugin to export and import WordPress posts and media files with real-time progress. 14 * Version: 1. 2.114 * Version: 1.3.0 15 15 * Requires at least: 6.7 16 16 * Requires PHP: 7.4 … … 30 30 // Define plugin constants for better maintainability 31 31 if ( ! defined( 'PEIWM_VERSION' ) ) { 32 define( 'PEIWM_VERSION', '1. 2.1' );32 define( 'PEIWM_VERSION', '1.3.0' ); 33 33 } 34 34 … … 47 47 48 48 if ( ! function_exists( 'peiwm_fs' ) ) { 49 // Create a helper function for easy SDK access. 49 /** 50 * Freemius SDK with smart initialization - "Pro Takes Ownership, Free Steps Aside" pattern. 51 * 52 * @since 1.3.0 53 * @return object|null Freemius SDK object. 54 */ 50 55 function peiwm_fs() { 51 56 global $peiwm_fs; 52 57 53 58 if ( ! isset( $peiwm_fs ) ) { 59 // Check if Pro version is active - if so, let Pro handle Freemius 60 if ( is_plugin_active( 'post-export-import-with-media-pro/post-export-import-with-media-pro.php' ) ) { 61 // Pro is active - Free steps aside, only load analytics 62 return null; // Pro will handle all Freemius functionality 63 } 64 54 65 // Include Freemius SDK. 55 66 require_once dirname( __FILE__ ) . '/freemius/start.php'; … … 58 69 'id' => '23084', 59 70 'slug' => 'post-export-import-with-media', 71 'premium_slug' => 'post-export-import-with-media-pro', 60 72 'type' => 'plugin', 61 73 'public_key' => 'pk_acaed015b901db29328b246e9e572', 62 74 'is_premium' => false, 63 'has_premium_version' => true,64 'has_paid_plans' => true,65 'is_org_compliant' => true,75 'has_premium_version' => true, 76 'has_paid_plans' => true, 77 'is_org_compliant' => true, 66 78 'menu' => array( 67 79 'slug' => 'peiwm-secure', 68 80 'first-path' => 'admin.php?page=peiwm-secure', 69 'network' => true, 70 'account' => false, 71 'pricing' => false, 72 'contact' => true, 73 'support' => true, 81 'network' => true, 82 'pricing' => true, 83 'contact' => true, 84 'support' => true, 85 ), 86 'parallel_activation' => array( 87 'enabled' => true, 88 'premium_version_basename' => 'post-export-import-with-media-pro/post-export-import-with-media-pro.php', 74 89 ), 75 90 ) ); … … 78 93 return $peiwm_fs; 79 94 } 95 96 // Only initialize if Pro is not active 97 if ( ! is_plugin_active( 'post-export-import-with-media-pro/post-export-import-with-media-pro.php' ) ) { 98 peiwm_fs(); 99 do_action( 'peiwm_fs_loaded' ); 100 } 101 } 80 102 81 // Init Freemius. 82 peiwm_fs(); 83 // Signal that SDK was initiated. 84 do_action( 'peiwm_fs_loaded' ); 103 /** 104 * Helper function to check if Freemius is available (either from Free or Pro). 105 * 106 * @since 1.1.0 107 * @return object|null Freemius SDK object or null. 108 */ 109 function peiwm_get_freemius_instance() { 110 // If Pro is active, get Freemius instance from Pro 111 if ( is_plugin_active( 'post-export-import-with-media-pro/post-export-import-with-media-pro.php' ) ) { 112 // Pro handles Freemius, so get it from Pro's function 113 if ( function_exists( 'peiwm_pro_get_freemius_instance' ) ) { 114 return peiwm_pro_get_freemius_instance(); 115 } 116 // Fallback: try to get Pro's Freemius instance directly 117 return function_exists( 'peiwm_fs' ) ? peiwm_fs() : null; 118 } 119 120 // Otherwise, Free handles it 121 return function_exists( 'peiwm_fs' ) ? peiwm_fs() : null; 85 122 } 86 123 -
post-export-import-with-media/trunk/readme.txt
r3441984 r3460903 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable Tag: 1. 2.17 Stable Tag: 1.3.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 14 14 **Post Export Import with Media** is a simple yet powerful WordPress plugin that helps you securely transfer posts, pages, media, widgets, menus, themes, plugins & settings along with their media files between WordPress sites. Unlike the default exporter, this plugin ensures that images and attachments are included, so you don’t end up with broken links or missing media. 15 15 16 Whether you're moving to a new host, creating staging sites, or backing up your content, this plugin handles everything with professional-grade reliability and user-friendly interface.16 Whether you're moving to a new host, creating staging sites, or backing up your content, this plugin handles everything with professional-grade reliability, user-friendly interface and powerful built-in Batch Processing for high-performance transfers all designed for simplicity and control. 17 17 18 18 ### ✨ Key Features … … 26 26 - Lightweight and beginner-friendly interface 27 27 - Works for bloggers, developers, and site administrators 28 - Batch Processing Settings (Optimized for large-scale websites) 29 - Scheduled Exports (Automated Backups) 28 30 29 31 #### **Pages Export/Import** … … 132 134 == Changelog == 133 135 136 ### 1.3.0 – 13 Feb 2026 137 138 - **New:** Batch Processing Settings for large-scale export/import 139 - Configure Posts, Pages, Media batch size 140 - Concurrent Requests control 141 - Media ZIP Size Limit (MB) 142 - Batch Delay (ms) 143 - Recommended settings based on content size 144 145 - **New:** Scheduled Exports (Automated Backups) 146 - Frequency: Daily, Weekly, Monthly 147 - Export: Posts, Pages, Media, Settings 148 - Email notifications on completion 149 - Backup rotation (auto delete old backups) 150 151 - **Storage Mode:** 152 - Local Storage (Active) 153 - Google Drive (Coming Soon) 154 155 - **Improvement:** Backup management (Download & Delete existing backups) 156 157 134 158 ### 1.2.1 – 18 Jan 2026 135 159 - **Enhancement:** Codebase Enhancement
Note: See TracChangeset
for help on using the changeset viewer.