| 开发者 | sadathossainwp |
|---|---|
| 更新时间 | 2026年9月18日 06:08 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
sadat-content-migration/site-ID/, and removed according to the retention setting. Fixed Apache and IIS deny rules protect this directory. Before a job starts, the plugin checks a harmless random text file through the site's uploads URL and requires an HTTP 403 or 404 response. A successful check is cached for five minutes. If protection cannot be verified, the job does not start. Imported content receives private source identifiers used only for duplicate detection and later updates.
External services
The plugin has no third-party service dependency. It makes a loopback request to its own harmless storage probe to verify that migration files cannot be downloaded directly; no content or personal data is included in this request.
When an administrator starts a direct transfer, the source site contacts only the destination WordPress URL entered by that administrator. It sends package metadata and the selected migration ZIP in sequential chunks to the Sadat Content Migration REST endpoints on that destination. The request uses the short-lived connection key generated by the destination administrator. Nothing is sent until both administrators take those explicit actions.
No. It selectively migrates content and portable relationships. It does not move themes, plugins, users, site options, arbitrary database tables, or server configuration.
The same theme or plugin that registers that post type or taxonomy must be active on the destination before import.
It preserves portable post and term metadata, including common SEO fields. Global settings and data stored only in a vendor-specific custom table are outside this plugin's scope.
Imported posts and media receive a private identifier based on the source site and original object ID. Media can also be reused when its SHA-256 file hash matches an existing imported file.
Yes. After all destination objects have IDs, the finalization phase rewrites known source URLs, WordPress media classes, block attributes, featured-image IDs, parent IDs, and ID-oriented custom-field values.
Comments are optional. Email addresses, IP addresses, user agents, and comment metadata require a separate explicit export and import choice because plugin-added comment metadata can contain personal data.
The importing user must have the destination post type's publishing capability. Otherwise, publish, future, and private states are safely downgraded to draft.
The plugin accepts common raster images, audio, video, PDF, text, and office documents that WordPress also allows on the current site. Scripts, executables, HTML, SVG, server configuration files, archives, and executable double extensions are rejected. Unsupported source attachments are skipped with a log entry. Every ZIP must contain only the package manifest, content data, media index, and the exact media files declared in that index. Older packages remain supported only if they meet these checks.
The host must block direct HTTP access to the sadat-content-migration directory within the current site's uploads directory. Apache and IIS rules are created automatically. On Nginx, or when directory rules are disabled, ask the hosting provider to configure the corresponding deny rule. The site also needs to reach its own uploads URL without authentication or a redirect so it can verify the protection. Do not edit plugin files to bypass this check.
Start a new export or import after updating. Jobs from the previous temporary-storage location are not resumed. Previously downloaded packages can still be imported if they pass the stricter validation. Old server temporary files are left to the host's temporary-file cleanup.
The plugin uses batches to reduce request timeouts, but PHP upload, memory, disk, and web-server limits still apply. Narrow the export filters or split a large migration into several packages when needed. The PclZip fallback supports individual files up to 32 MB; enable the PHP ZipArchive extension for larger files.
The outbound request uses WordPress safe HTTP validation to reduce server-side request forgery risk. A public HTTPS destination is required. Use the download/upload workflow for local development, HTTP-only, or private-network destinations.
It operates on the current site in a multisite network. It does not migrate an entire network in one operation.
sadat-content-migration directory slug.wp_nonce_url(), which HTML-escapes "&" to "&" for safe use inside markup; the link was instead being assigned via JavaScript (link.href = ...), which never decodes that escaping, so the job ID and nonce were never actually received by the server. The link is now built without HTML escaping, since it is delivered as JSON and consumed by JavaScript, not printed into HTML.