| 开发者 | uzairrehman |
|---|---|
| 更新时间 | 2026年10月20日 20:59 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
chargeforms folder to /wp-content/plugins/, or install directly from the WordPress Plugin Directory.[chargeforms id="X"] shortcode into any page or post.Yes. Every feature included in this WordPress.org plugin is available without a paid license, time limit, or submission cap.
No. Everything is drag-and-drop — fields, conditional logic, multi-step layout, and payment setup are all configured from the builder UI, no code required.
No. The front end only loads the JS/CSS a given form actually uses, not an admin-sized bundle — visitors never download builder code they'll never run.
Yes. Show or hide any field based on other answers, with nested AND/OR/NOT groups for more complex rules.
Yes. Multi-step forms come with a progress bar and per-step validation built in.
Yes. Every entry can be filtered, exported, and managed from the wp-admin entries dashboard, and CSV entry import is included free.
Yes. The built-in Migrator (Tools screen) reads your existing forms directly from each plugin's own data and rebuilds them as ChargeForms forms.
Please use the support forum — that's actively monitored.
The assets/build/ files shipped in this plugin (builder.js, frontend.js, and their CSS) are compiled by webpack from real, unminified source — nothing here is obfuscated, only minified for production the same way every WordPress admin ships its own JS. That source ships in this same plugin package: see assets/src/ for the real, readable JavaScript, and webpack.config.js/webpack.vue.config.js plus package.json for the exact build configuration and tooling versions used to produce assets/build/ from it. To rebuild it yourself: npm ci followed by npm run build (the admin builder and public front-end bundle) and npm run vue:build (the Vue-based Forms List screen).
Google Fonts (optional, off by default). Turned on under Global Settings > General, this plugin loads the Poppins typeface from Google Fonts (fonts.googleapis.com/fonts.gstatic.com) on ChargeForms' own wp-admin screens only (never on your site's front end, never on a visitor-facing page) so the admin UI matches its own design. No request to Google happens until you enable it; the admin UI uses your system font stack otherwise. While enabled, this sends the logged-in admin's IP address and browser info to Google on every admin page load, the same as any page that embeds a Google Fonts stylesheet. Google's terms: https://developers.google.com/fonts/faq and privacy policy: https://policies.google.com/privacy.
reCAPTCHA / hCaptcha / Cloudflare Turnstile / CleanTalk. Entirely optional, off by default. If you turn one on (Global Settings > Security) to add spam protection to your forms, the corresponding third-party service's own script loads on your front-end forms and processes the visitor's IP/browser data per that service's own terms — Google (reCAPTCHA): https://policies.google.com/privacy, hCaptcha: https://www.hcaptcha.com/privacy, Cloudflare (Turnstile): https://www.cloudflare.com/privacypolicy/, CleanTalk: https://cleantalk.org/privacy.
Stripe / PayPal (optional). Only active on a form where you've added a Payment field and connected your own Stripe or PayPal account (Global Settings > Payment Settings). When a visitor pays, the payment amount and the payer's billing details they entered are sent directly to Stripe (https://stripe.com/privacy) or PayPal (https://www.paypal.com/privacy) to process the charge — standard for any WordPress payment plugin. Nothing is sent to either service on a form with no Payment field.
Your own configured integrations (Webhook, Mailchimp, Slack, Discord, Telegram, Notion, HubSpot, Google Sheets). Only ever send data if you explicitly connect them yourself (Integrations screen) — nothing is sent to any of these unless you've entered your own API key/URL for that specific service. When connected, every submission's data is sent to that service at the time of submission: Mailchimp (subscriber added to your list) — https://mailchimp.com/legal/terms/ / https://mailchimp.com/legal/privacy/; Notion (a page created in your database) — https://notion.notion.site/Terms-and-Privacy-28ffdd083dc3473e9c2da6ec011b58ac / https://www.notion.com/trust/privacy-policy; HubSpot (a contact created/updated in your CRM) — https://legal.hubspot.com/terms-of-service / https://legal.hubspot.com/privacy-policy; Telegram (a message sent via your bot) — https://telegram.org/tos / https://telegram.org/privacy.
Address autocomplete (optional). If a form uses the Address field's autocomplete feature, each keystroke in the address box is sent to OpenStreetMap's Nominatim search API (nominatim.openstreetmap.org) to fetch matching addresses. Nominatim usage policy: https://operations.osmfoundation.org/policies/nominatim/ — OSM Foundation privacy policy: https://wiki.osmfoundation.org/wiki/Privacy_Policy.
License validation (Pro only). If you activate a Pro license key, that key and your site URL are sent to chargeforms.com to verify it. Nothing is sent if you're on the free plan. Terms: https://chargeforms.com/legal/terms — Privacy: https://chargeforms.com/legal/privacy.
chargeforms from the Contributors header — not a registered WordPress.org username, so it was silently dropped on import. Only uzairrehman remains.array $x = null). They are now written explicitly as ?array $x = null — identical behaviour, no deprecation notice. The explicit form still works on the plugin's minimum PHP 7.4./legal/, not /terms//privacy). Added HubSpot's Terms/Privacy links, which the readme had omitted. Removed the admin-notice-suppression feature entirely (Menu and Builder_Page both cleared WordPress core's and other plugins' admin_notices on ChargeForms' own screens) — not something WordPress.org guidelines allow scoping down, only removing, same as the earlier Custom CSS/JS removal.PluginCheck.CodeAnalysis.Heredoc.NotAllowed) — the wp_add_inline_script()/wp_add_inline_style() conversions in 0.261.0 used heredoc/nowdoc (<<<) syntax to hold the JS/CSS strings, which this scanner disallows entirely regardless of content. All 18 heredoc/nowdoc blocks rewritten as plain quoted PHP strings (multi-line single-quoted strings, or string concatenation where a translated value needed to be inserted) with identical JS/CSS content — no behavior change, just different PHP string syntax.chargeforms), the Custom CSS/JS feature removed entirely (arbitrary code insertion isn't permitted, only removing it satisfies the guideline), every remaining inline <script>/<style> block converted to wp_enqueue_script/wp_add_inline_script/wp_add_inline_style, two unused core-file includes removed, Google Fonts changed from always-on to an explicit opt-in toggle (Global Settings > General, off by default), four previously-undisclosed external services documented (Mailchimp, Notion, Telegram, Nominatim/OpenStreetMap), and the built JS/CSS source now ships inside the plugin package itself (assets/src/, webpack.config.js, package.json) since this plugin's repository stays private.WordPress.DB.PreparedSQL.NotPrepared errors (entries/forms/form-starts data layer). Two earlier restructuring attempts failed (0.255.0's variable-held query text, 0.257.0's single-ternary-of-literals both still tripped the check); the actual fix the scanner accepts is duplicating each conditional branch so $wpdb->prepare()'s query-text argument is a genuine inline literal at every call site, with zero variable indirection of any kind — verified against the live scanner one method at a time before applying it everywhere.$wpdb->prepare()'s %i identifier placeholder (WP 6.2+) across the entries, activity log, drafts, subscriptions, form starts, notification log, API log, email log, forms, install migration, and legacy-importer data layers. Minimum required WordPress version raised from 6.0 to 6.2 for %i support.ini_set() sniff coverage, an unprefixed global in uninstall.php, and every remaining direct-database-query/prepared-SQL warning across the data layer (verified safe — each is a fixed internal table-name constant alongside properly placeholdered values, not user input) is now explicitly annotated with its reasoning instead of silently triggering the scanner.CHANGELOG.md, shipped in this plugin's own files (this section is capped at 5000 characters).
Additional opt-in contact integrations
Brevo and ActiveCampaign: when configured and enabled for a form, send visitor email and configured name values to the selected list. Brevo terms/privacy: https://www.brevo.com/legal/termsofuse/ and https://www.brevo.com/legal/privacypolicy/. ActiveCampaign terms/privacy: https://www.activecampaign.com/legal/terms-of-service and https://www.activecampaign.com/legal/privacy-policy. No requests run until connected and enabled, except an explicitly requested read-only connection test.