| 开发者 | georget777 |
|---|---|
| 更新时间 | 2026年9月11日 00:34 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/wp-content/plugins/ (or install directly from the WordPress Plugins screen → Add New)No. The plugin works with the free version of Elementor.
Yes. Converted pages import as classic elements, which Elementor 4 officially supports alongside Atomic — you edit them exactly as before, and classic elements have no deprecation date. Verified on Elementor 4.2. If your site ships a widget your template uses as "legacy" (off by default), the plugin tells you exactly which one and how to enable it after the import.
Any valid HTML page — from AI code generators, static websites, landing page builders, or hand-coded HTML. The converter handles modern CSS layouts including flexbox and grid.
Cleaner, well-structured HTML converts more accurately — semantic tags, sensible class names, and standard CSS layouts all help, while heavily-nested or obfuscated markup (common in some AI exports) is harder to map. We publish a short set of HTML guidelines with concrete do's and don'ts here: https://aitoelementor.com/ai-guidelines/ — worth a look before converting AI-generated pages.
No — and this is important. The plugin converts one page per conversion, not an entire site in a single step. Each conversion produces one Elementor template from one HTML page. If you have a multi-page website, convert each page on its own: paste or upload index.html and convert it, then about.html, then contact.html, and so on. If you upload a .zip, it should contain a single page's HTML plus that page's images and CSS — not a full-site export. Trying to convert a whole site in one go will not work as expected.
The most common cause is that Elementor's Flexbox Container feature is turned off on your site. Converted templates are built from containers, so with that feature disabled the page renders blank (even though the template imported correctly). The plugin now detects this and shows a warning with a one-click Enable Flexbox Containers button (for administrators). You can also enable it manually at Elementor → Settings → Features → Flexbox Container (set it to Active and save). After enabling, reload the page — it will render.
Icons drawn as inline SVG can be imported two ways. By default they are kept as markup: they render
exactly as designed, but they are not editable through Elementor image controls, and the import
notice tells you how many were kept that way.
The alternative is to save each icon into your Media Library as a real file, which makes it an
ordinary Elementor Image widget. That is off by default on purpose — writing SVG into a Media
Library is a security decision that belongs to the site owner, not to a plugin. Every icon is
re-sanitised through a geometry allowlist and Elementor's own SVG sanitizer before anything is
written, and the permission is scoped to the import itself rather than switching on SVG uploads
site-wide.
To enable it, add this to a small plugin or your theme functions.php:
add_filter( 'htel_import_svg_icons', '__return_true' );
Convert the page again afterwards — the setting applies at import time, so pages already imported
keep the markup they arrived with.
If you upload a ZIP file containing your HTML and images folder, all images are automatically imported to your WordPress Media Library and the paths are updated in the template.
The conversion service includes one (1) free conversion per website — no sign-up or key required — so you can try it on a real page first. If you need to convert more, the service operator offers optional paid subscription plans with higher monthly quotas; you enter the key in Settings. The plugin itself requires no subscription and locks no features — the quota is on the external conversion service, and the plugin works the same on both tiers.
To the conversion service at api.aitoelementor.com. See the "External Service" section above for full details, including the operator's Terms of Service and Privacy Policy links.
Templates are saved to the Elementor Template Library. Go to "Templates" > "Saved Templates" in your WordPress admin, or use the direct link provided after conversion.
It works with the HTML output of any code generator — ChatGPT, Claude, Lovable, bolt.new, v0, Cursor, and Anthropic Stitch are all supported, including the offline/bundled export formats some of them produce. It also works with plain hand-written HTML and static site exports. If it's valid HTML, the converter can process it.
The plugin keeps working — you simply see a plain message from the service saying you've used your free conversion for this site. Nothing in the plugin is disabled or locked. If you need to convert more pages you can optionally subscribe to a paid plan on the service operator's website and paste the key into Settings.
Your HTML is sent to the conversion service to perform the conversion, and the service also keeps a copy for up to 90 days to find and fix conversion bugs. It is stored with your site's domain and a timestamp only — never with your subscription key or email — and is deleted automatically. It is not shared with third parties and is not used to train any model offered to others. This applies on the free tier as well as paid plans. You can switch it off: untick sampling in the plugin's Settings > Data & Privacy, and nothing further is kept. You can also ask for anything already collected from your site to be deleted by emailing privacy@aitoelementor.com with your domain. Full terms are in Section 9.4 of the operator's Terms of Service, linked in the "External Service" section above. The plugin does not send anything in the background — it only contacts the service when you click Convert, enter a key, or save Settings.
The result screen auto-diagnoses common causes (security/optimization plugins like Wordfence or SG Security blocking the request, outbound HTTPS blocked, or request-body size). Follow the on-screen guidance for your specific setup. For best fidelity, upload a ZIP that includes your HTML plus its images and CSS files so the converter has the full page.
padding: 0 6% keeps its percentage instead of being converted to pixels.<script> template and assembled by JavaScript as the page loads, the converter now tells you so instead of quietly leaving that section out. The notice names what was missed and how to bring it across, so a partial result is explained rather than surprising.add_filter('htel_import_svg_icons', '__return_true') while it completes visual review.htel_import_image_sizes filter.http_request_failed, while the connection-error diagnostic incorrectly blamed the customer's firewall. The diagnostic now distinguishes "URL is malformed" (configuration issue, surfaced clearly) from "outbound is blocked" (firewall, real diagnosis).<link rel="stylesheet" href="assets/styles.css"> reference and missed the bulk of layout rules (grid, flex, aspect-ratio, etc.). Pages with separate stylesheets now convert with their full CSS — typically a 30-50% improvement in visual fidelity for sites that split inline + external CSS. Image url() references inside the inlined CSS are rewritten to the new WP Media Library URLs so they continue to resolve. Absolute stylesheet URLs (Google Fonts, CDNs) are left as <link> tags and not inlined.aitoel-html-importer) to avoid trademark confusion per WordPress.org plugin review guidance. Internal class/function names and the plugin directory are unchanged.$_FILES fields at the request boundary (html_file and zip_file) before any downstream use; verify uploads with is_uploaded_file(). The derived filename-based template title is now sanitize_text_field()-filtered before being sent to the API.$exp_date (from the service API's expires_at) when echoing into the settings page. Other echo sites in the settings template migrated to esc_attr(), wp_kses() with an explicit allowlist, or esc_html() — escaping late at the output boundary in every case.