{"id":343674,"date":"2026-08-30T05:59:47","date_gmt":"2026-08-30T05:59:47","guid":{"rendered":"https:\/\/ja.wordpress.org\/plugins\/spwform\/"},"modified":"2026-08-30T05:59:27","modified_gmt":"2026-08-30T05:59:27","slug":"spw-form","status":"publish","type":"plugin","link":"https:\/\/ja.wordpress.org\/plugins\/spw-form\/","author":23484646,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.8","stable_tag":"0.2.8","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"SPWForm","header_author":"Squareman pixel works","header_description":"Mail form plugin","assets_banners_color":"cfd4de","last_updated":"2026-08-30 05:59:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/studio.squareman.net\/","header_author_uri":"https:\/\/squareman.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.8":{"tag":"0.2.8","author":"squareman","date":"2026-08-30 05:59:27","revision":3672080}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3672080,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3672080,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3672080,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3672080,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3672080,"resolution":"1","location":"assets","locale":"","width":2716,"height":2311},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3672080,"resolution":"2","location":"assets","locale":"","width":1745,"height":1501},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3672080,"resolution":"3","location":"assets","locale":"","width":2363,"height":1987},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3672080,"resolution":"4","location":"assets","locale":"","width":1754,"height":831}},"screenshots":{"1":"Form edit screen.","2":"Mail settings screen.","3":"Validation settings and shortcode reference.","4":"Completion message settings."}},"plugin_section":[],"plugin_tags":[358,5887,2253,73634,80],"plugin_category":[43],"plugin_contributors":[263450],"plugin_business_model":[],"class_list":["post-343674","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form","plugin_tags-file-upload","plugin_tags-form-builder","plugin_tags-mail-form","plugin_tags-shortcode","plugin_category-customization","plugin_contributors-squareman","plugin_committers-squareman"],"banners":{"banner":"https:\/\/ps.w.org\/spw-form\/assets\/banner-772x250.png?rev=3672080","banner_2x":"https:\/\/ps.w.org\/spw-form\/assets\/banner-1544x500.png?rev=3672080","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/spw-form\/assets\/icon-128x128.png?rev=3672080","icon_2x":"https:\/\/ps.w.org\/spw-form\/assets\/icon-256x256.png?rev=3672080","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/spw-form\/assets\/screenshot-1.png?rev=3672080","caption":"Form edit screen."},{"src":"https:\/\/ps.w.org\/spw-form\/assets\/screenshot-2.png?rev=3672080","caption":"Mail settings screen."},{"src":"https:\/\/ps.w.org\/spw-form\/assets\/screenshot-3.png?rev=3672080","caption":"Validation settings and shortcode reference."},{"src":"https:\/\/ps.w.org\/spw-form\/assets\/screenshot-4.png?rev=3672080","caption":"Completion message settings."}],"raw_content":"<!--section=description-->\n<p>SPWForm is a mail form plugin for WordPress. You define each form in the admin screen, place the generated shortcode on a page, and manage the mail settings \u2014 all without writing PHP. If you have built forms with traditional WordPress mail-form plugins, the shortcode-based workflow will feel immediately familiar.<\/p>\n\n<p>Each form is managed as a private custom post type. You can build the form body with shortcodes for common fields, configure auto-reply and administrator notification emails, and choose whether to use a confirmation step before sending.<\/p>\n\n<h4>Two ways to style your forms<\/h4>\n\n<p>SPWForm suits both newcomers and experienced developers:<\/p>\n\n<ul>\n<li>Instant design \u2014 A ready-made sample form is included on a fresh install. Duplicate it, turn on \"Use SPWForm standard styles,\" and you get a clean, styled form out of the box with no CSS required.<\/li>\n<li>Full design freedom \u2014 Leave \"Use SPWForm standard styles\" off, and no standard design is applied. Style the form entirely with your own CSS or theme to match any design \u2014 the traditional, hands-on approach experienced form builders are used to.<\/li>\n<\/ul>\n\n<p>Either way, you can start from the bundled sample and adjust the fields, emails, and validation to fit your site.<\/p>\n\n<h4>Main features<\/h4>\n\n<ul>\n<li>Form management screen in the WordPress admin.<\/li>\n<li>Form output with <code>[SPWForm_scode key=\"FORM_ID\"]<\/code>.<\/li>\n<li>Field shortcodes for text, textarea, email, hidden, radio, checkbox, select, and file upload fields.<\/li>\n<li>Confirmation and completion flow support.<\/li>\n<li>Auto-reply email and administrator notification email settings.<\/li>\n<li>Custom validation rules for required fields, email addresses, matching fields, numbers, text types, URLs, postal codes, and phone numbers.<\/li>\n<li>File upload support with configurable allowed file extensions.<\/li>\n<li>Bundled structural and state safeguards for every form, plus an optional standard design loaded only on pages that render an enabled form.<\/li>\n<li>Per-form completion message.<\/li>\n<li>Optional separate input, confirmation, and completion URLs.<\/li>\n<li>Noindex output for confirmation and completion pages when Step URLs are used.<\/li>\n<li>Localized default sample forms for Japanese and English sites.<\/li>\n<\/ul>\n\n<h4>Supported field shortcodes<\/h4>\n\n<ul>\n<li><code>[spwf_text]<\/code><\/li>\n<li><code>[spwf_textarea]<\/code><\/li>\n<li><code>[spwf_mail]<\/code><\/li>\n<li><code>[spwf_hidden]<\/code><\/li>\n<li><code>[spwf_radio]<\/code><\/li>\n<li><code>[spwf_checkbox]<\/code><\/li>\n<li><code>[spwf_select]<\/code><\/li>\n<li><code>[spwf_file]<\/code><\/li>\n<li><code>[spwf_back]<\/code><\/li>\n<li><code>[spwf_submit]<\/code><\/li>\n<li><code>[spwf_confirm]<\/code><\/li>\n<li><code>[spwf_reset]<\/code><\/li>\n<\/ul>\n\n<h4>Notes<\/h4>\n\n<p>SPWForm sends mail through WordPress' <code>wp_mail()<\/code> function. Actual delivery depends on your server and mail configuration. For reliable delivery, configure your site and sender domain correctly, including SPF, DKIM, and DMARC where appropriate.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/spw-form\/<\/code> directory, or install the plugin through the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the Plugins screen in WordPress.<\/li>\n<li>Open the SPWForm menu in the WordPress admin.<\/li>\n<li>Create or edit a form.<\/li>\n<li>Copy the generated shortcode, such as <code>[SPWForm_scode key=\"123\"]<\/code>.<\/li>\n<li>Paste the shortcode into the page where you want to show the form.<\/li>\n<\/ol>\n\n<p>When the plugin is activated on a site with no existing SPWForm forms, it creates one localized sample form.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20display%20a%20form%3F\"><h3>How do I display a form?<\/h3><\/dt>\n<dd><p>Create a form in the SPWForm admin screen, then place the generated shortcode on a page:<\/p>\n\n<pre><code>[SPWForm_scode key=\"123\"]\n<\/code><\/pre>\n\n<p>Replace <code>123<\/code> with the form ID shown in the form edit screen.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20confirmation%20screen%20before%20sending%3F\"><h3>Can I use a confirmation screen before sending?<\/h3><\/dt>\n<dd><p>Yes. Add the back, submit, and confirm button shortcodes to the form body:<\/p>\n\n<pre><code>[spwf_back value=\"Back\"]\n[spwf_submit value=\"Submit\"]\n[spwf_confirm value=\"Confirm\"]\n<\/code><\/pre>\n\n<p>Use <code>tag=\"button\"<\/code> on Back, Submit, Confirm, or Reset to render a <code>&lt;button&gt;<\/code> element. Back, Submit, and Confirm remain submit controls; Reset remains a reset control. For presentation, use the <code>class<\/code> attribute with CSS defined by your theme. User-supplied <code>style<\/code> attributes are not rendered.<\/p>\n\n<p>You can also configure separate Step URLs for input, confirmation, and completion pages.<\/p><\/dd>\n<dt id=\"which%20file%20types%20can%20be%20uploaded%3F\"><h3>Which file types can be uploaded?<\/h3><\/dt>\n<dd><p>The file field supports an <code>allow<\/code> attribute. Supported extensions include:<\/p>\n\n<pre><code>jpg jpeg png gif webp pdf txt csv zip doc docx xls xlsx\n<\/code><\/pre>\n\n<p>If <code>allow<\/code> is omitted, image file types are allowed by default.<\/p><\/dd>\n<dt id=\"does%20spwform%20include%20spam%20protection%3F\"><h3>Does SPWForm include spam protection?<\/h3><\/dt>\n<dd><p>Yes. The core plugin includes two spam defenses that work without any configuration:<\/p>\n\n<ul>\n<li>A honeypot field that silently drops submissions made by automated bots.<\/li>\n<li>Rate limiting that stops the same visitor from sending many messages in a short time (by default, up to 5 sends per 60 seconds).<\/li>\n<\/ul>\n\n<p>These are enabled automatically. For stronger protection against targeted spam, add a CAPTCHA (reCAPTCHA is available in the Pro add-on).<\/p>\n\n<p>Please note: because these defenses are enabled by default, visitors who submit many times in quick succession (for example, several people sharing one office\/network connection) may occasionally see a \"please wait and try again\" message. Developers can adjust the limits with the <code>spwf\/rate_limit\/*<\/code> filters.<\/p><\/dd>\n<dt id=\"submissions%20are%20rejected%20with%20a%20security%20error.%20what%20should%20i%20check%3F\"><h3>Submissions are rejected with a security error. What should I check?<\/h3><\/dt>\n<dd><p>If the form page is served from a full-page cache (for example WP Super Cache, LiteSpeed Cache, or a CDN), the security token embedded in the cached page can expire after several hours, causing later submissions to be rejected. Exclude the form page from full-page caching so each visitor receives a fresh page.<\/p><\/dd>\n<dt id=\"how%20are%20uploaded%20files%20protected%20on%20nginx%20or%20other%20non-apache%20servers%3F\"><h3>How are uploaded files protected on nginx or other non-Apache servers?<\/h3><\/dt>\n<dd><p>Uploaded files are stored under <code>wp-content\/uploads\/spwform\/<\/code>. These files are never linked by a public URL: the core plugin uses them only as email attachments, and the Pro add-on serves stored attachments through an authenticated admin request. On Apache, a bundled <code>.htaccess<\/code> file blocks directory listing and direct access to this folder.<\/p>\n\n<p>Servers that do not read <code>.htaccess<\/code> (for example nginx) ignore this protection. On such servers, add an equivalent rule to your server configuration to deny direct web access to the folder. For nginx:<\/p>\n\n<pre><code>location ^~ \/wp-content\/uploads\/spwform\/ { deny all; }\n<\/code><\/pre>\n\n<p>Adjust the path if your uploads directory is in a non-default location. Because these files are never linked publicly, denying direct access does not affect any feature. File names are random and the folder cannot be listed, so this is a defense-in-depth measure.<\/p><\/dd>\n<dt id=\"can%20i%20place%20multiple%20spwform%20forms%20on%20one%20page%3F\"><h3>Can I place multiple SPWForm forms on one page?<\/h3><\/dt>\n<dd><p>No. Placing more than one SPWForm form on the same page is not supported. Please use one form per page.<\/p><\/dd>\n<dt id=\"where%20can%20i%20find%20documentation%3F\"><h3>Where can I find documentation?<\/h3><\/dt>\n<dd><p>Documentation is available in the plugin admin screen. A Japanese guide is also available at:<\/p>\n\n<p>https:\/\/studio.squareman.net\/guide\/spwform\/<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.8<\/h4>\n\n<ul>\n<li>Bundled the translation files and loaded the plugin text domain so the interface follows the site language. Official translate.wordpress.org language packs take precedence automatically once they are available.<\/li>\n<\/ul>\n\n<h4>0.2.7.4<\/h4>\n\n<ul>\n<li>Resolved the legacy default-sample detection so an unmarked sample is looked up once and cached in a dedicated option instead of rescanning every form on each check. The one-time resolution reads forms in finite date-ordered batches and still selects the oldest form that exactly matches the default structure; the cache is rebuilt when forms are saved, deleted, or imported, or when the default payload changes. Routine checks no longer scale with the number of forms.<\/li>\n<\/ul>","raw_excerpt":"Create and manage mail forms with shortcodes, confirmation screens, validation rules, file uploads, and customizable notification emails.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/343674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=343674"}],"author":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/squareman"}],"wp:attachment":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=343674"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=343674"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=343674"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=343674"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=343674"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=343674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}