| 开发者 | ajebang |
|---|---|
| 更新时间 | 2026年8月11日 22:11 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/aj-form/survey/12/, so
you can share a link without embedding a shortcode anywhere[aj_form id="123"]
Turn individual parts on or off:
[aj_form id="123" title="0" image="0" description="0" deadline="0" links="0"]
Choose the heading level for the form title. The default is h2, which sits above
the h3 used for question titles:
[aj_form id="123" title_tag="h1"]
Output a single question, counting from 1. This is useful when you want to spread
the questions of one form across a longer article:
[aj_form id="123" sno="2"]
The display defaults depend on sno. Without it you get everything: title, image,
description, deadline notice and related links. With it you get the question on its
own, because repeating the title and the deadline next to every question would be
noise. Writing an attribute yourself always wins over either default.
List your published surveys as cards, each linking to its standalone page:
[aj_form_list]
[aj_form_list] accepts type="survey|form|all", ids="3,5", limit="10",
orderby="date|title|deadline", order="desc|asc", excerpt="1", words="25",
count="1", deadline="1", status="1" and image="1".
The Shortcodes tab under Ajebang Forms → Settings documents every attribute, with copy
ready examples for the forms on your own site.
Permissions
Creating forms and viewing statistics requires the manage_options capability, so
only administrators can do it. Submitting a response requires nothing at all —
anonymous visitors can take part.
Data storage
Responses are not stored as posts. The plugin creates two of its own tables:
{prefix}aj_form_forms — form definitions{prefix}aj_form_submissions — submitted responsesajebang-form-survey-builder folder into wp-content/plugins/.No. Anyone can submit a response without logging in. Only administrators can create forms and read the statistics.
They stay. The plugin has no uninstall routine and never drops its tables, so reinstalling brings your forms and responses back exactly as they were.
Visit Settings → Permalinks once to let WordPress rebuild its rewrite rules. If
your site uses the plain permalink structure, the plugin falls back to addresses
in the form ?aj_form_view=12 instead.
Yes, with the sno attribute: [aj_form id="1" sno="2"] renders the second
question by itself. Validation, submission and results are all scoped to that
question, and the answers are still recorded against the original form.
The plugin is built for it. Anonymous submissions do not rely on a nonce, because a cached page eventually serves an expired one and would lock every visitor out. After the page loads, the plugin fetches the real participation state and corrects the screen, so a cached "not yet answered" view does not let someone respond twice.
Email ajebang@ajebang.com or visit https://ajebang.com.
ajebang-form-survey-builder.wp_add_inline_script() instead
of a <script> tag written into the page.the_title filter callback escapes the title it returns. A filter callback's
return value is output by WordPress without any escaping of its own.load_plugin_textdomain() and the bundled .po/.mo files. Translations
for a plugin hosted on wordpress.org come from translate.wordpress.org through the
standard update system, so neither is needed.Plugin URI header. It pointed at the same address as Author URI,
which wordpress.org rejects on upload — the two describe different things and
neither is required. Author URI is the accurate one here; wordpress.org
provides the plugin's own page.REQUEST_URI. It is passed
through esc_url_raw() rather than sanitize_text_field(), which strips %xx
sequences and would mangle any address containing non-ASCII characters.phpcs:ignore
comments with their reasons: anonymous submissions do not carry a nonce, input is
sanitised after decoding rather than before, and the custom tables are reached
with direct $wpdb calls. No change in behaviour — 100 warnings down to 1.translators: comment was moved onto the line
directly above its gettext call. No change in behaviour.sno. [aj_form id="1" sno="1"] now renders the
question on its own, without the title, featured image, description, deadline
notice or related links. The attribute exists to drop a question into the middle of
an article, where repeating all of that was in the way. A whole form, with no sno,
still shows everything as before.deadline attribute, which turns the "you can respond until…" notice on
and off. The notice on a closed form always appears, since it explains why there is
no form to fill in.[aj_form id="1" sno="1" deadline="1"].<h1 class="entry-title"> slot, which stayed blank because the post is virtual.
The plugin now fills that slot through the the_title filter, leaving other titles
on the page, such as navigation items, untouched.h1 by default and can
be turned off under Settings → General.image="0".<h3> elements rather than labels, which were not headings
as far as document structure was concerned. The hierarchy runs form title (h2, or
h1 on a standalone page) then question title (h3), and result cards match. The
wrapper changed from <p> to <div>, because a paragraph cannot contain a heading
and browsers break the markup apart.font-weight rule meant for field titles
was catching them too.label for, and radio
and checkbox groups are tied to their question title with role="group" and
aria-labelledby.[aj_form_list] shortcode, which shows published surveys as cards with
the title, an excerpt, the response count, the deadline and an open or closed badge.
Open surveys sort above closed ones and each card links to its standalone page.title, description and links to [aj_form]. All
default to on. Titles are printed by default from this version, so add title="0"
if your post already has one.sno attribute for rendering a single question. Validation, submission
and results are scoped to that question; everything else behaves as before./aj-form/{type}/{id}/. The
base is configurable, and sites using plain permalinks fall back to
?aj_form_view=12.setcookie() and wp_safe_redirect()
fail with "headers already sent".Domain Path header, load_plugin_textdomain() and a
bundled POT file. Translations were not being loaded before this.translators: comments and _n() for counts.Requires at least, Requires PHP and the licence
fields, and updated Tested up to.