{"id":354917,"date":"2026-08-27T18:28:48","date_gmt":"2026-08-27T18:28:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/adaptive-level-test\/"},"modified":"2026-08-27T23:06:20","modified_gmt":"2026-08-27T23:06:20","slug":"idiomiq-adaptive-placement-test","status":"publish","type":"plugin","link":"https:\/\/hsb.wordpress.org\/plugins\/idiomiq-adaptive-placement-test\/","author":13303541,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.5","stable_tag":"1.3.5","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"IdiomIQ Adaptive Placement Test","header_author":"IdiomIQ","header_description":"Adaptive CEFR placement test (A2\u2013C2) for schools and educators. Preconfigured English bank; Bayesian IRT for efficiency and more accurate results.","assets_banners_color":"ffffff","last_updated":"2026-08-27 23:06:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/idiomiq.com\/iiqapt\/","header_author_uri":"https:\/\/idiomiq.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":83,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.4":{"tag":"1.3.4","author":"joerebbeck","date":"2026-08-27 18:28:25","revision":3669369},"1.3.5":{"tag":"1.3.5","author":"joerebbeck","date":"2026-08-27 23:06:20","revision":3669599}},"upgrade_notice":{"1.3.5":"<p>Fixes HTML rendering in the settings live preview and refreshes the plugin description.<\/p>","1.3.4":"<p>Fixes a database error logged on activation. No action required.<\/p>","1.3.3":"<p>Security hardening for the settings save-tracking notice and a corrected Plugin URI.<\/p>","1.3.2":"<p>Internal naming standardised. The shortcode is now <code>[iiqapt]<\/code> \u2014 update any pages that used the old <code>[adaptive_level_test]<\/code> shortcode.<\/p>","1.3.1":"<p>Renamed to IdiomIQ Adaptive Placement Test. Question bank and question count limits removed \u2014 the free plugin is now fully unlimited.<\/p>","1.3.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3669612,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3669612,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3669595,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3669595,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.4","1.3.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3669595,"resolution":"1","location":"assets","locale":"","width":1044,"height":824},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3669595,"resolution":"2","location":"assets","locale":"","width":1044,"height":824},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3669612,"resolution":"3","location":"assets","locale":"","width":1029,"height":987},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3669595,"resolution":"4","location":"assets","locale":"","width":1915,"height":1045},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3669595,"resolution":"5","location":"assets","locale":"","width":1915,"height":1045},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3669595,"resolution":"6","location":"assets","locale":"","width":1915,"height":1045},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3669595,"resolution":"7","location":"assets","locale":"","width":1915,"height":1045},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3669595,"resolution":"8","location":"assets","locale":"","width":1915,"height":1045},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3669595,"resolution":"9","location":"assets","locale":"","width":1915,"height":1045}},"screenshots":{"1":"The start screen visitors see on your page \u2014 they enter an email address and opt in before beginning the test.","2":"An adaptive question during the test, with a progress bar and a dyslexia-friendly font toggle.","3":"The results screen \u2014 the estimated CEFR level shown on an A2\u2013C2 scale with margin of error, and emailed to the student.","4":"Attempt Logs \u2014 every captured lead with email, result, confidence and time taken; searchable, sortable and exportable to CSV.","5":"Quiz Settings, Before the Quiz \u2014 customise the start screen title, wording, email prompt and consent, with a live preview.","6":"Quiz Settings, During the Quiz \u2014 loading and analysing text, progress bar, question counter, alignment and the dyslexia-friendly font toggle.","7":"Quiz Settings, After the Quiz \u2014 customise the results screen and margin-of-error label, with a live preview.","8":"Messages \u2014 customise the student results email and the new-lead admin notification, including placeholders.","9":"Questions \u2014 manage question banks, add or edit questions, and bulk import or export via CSV.","10":"General Settings \u2014 test length, target confidence, sub-level labels, brand colour, log retention and rate limiting."}},"plugin_section":[262246],"plugin_tags":[277944,277967,277943,337,277966],"plugin_category":[53],"plugin_contributors":[277945],"plugin_business_model":[],"class_list":["post-354917","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-cefr","plugin_tags-english-test","plugin_tags-esl","plugin_tags-lead-generation","plugin_tags-placement-test","plugin_category-ratings-and-reviews","plugin_contributors-joerebbeck","plugin_committers-joerebbeck"],"banners":{"banner":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/banner-772x250.png?rev=3669595","banner_2x":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/banner-1544x500.png?rev=3669595","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/icon-128x128.png?rev=3669612","icon_2x":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/icon-256x256.png?rev=3669612","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-1.png?rev=3669595","caption":"The start screen visitors see on your page \u2014 they enter an email address and opt in before beginning the test."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-2.png?rev=3669595","caption":"An adaptive question during the test, with a progress bar and a dyslexia-friendly font toggle."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-3.png?rev=3669612","caption":"The results screen \u2014 the estimated CEFR level shown on an A2\u2013C2 scale with margin of error, and emailed to the student."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-4.png?rev=3669595","caption":"Attempt Logs \u2014 every captured lead with email, result, confidence and time taken; searchable, sortable and exportable to CSV."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-5.png?rev=3669595","caption":"Quiz Settings, Before the Quiz \u2014 customise the start screen title, wording, email prompt and consent, with a live preview."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-6.png?rev=3669595","caption":"Quiz Settings, During the Quiz \u2014 loading and analysing text, progress bar, question counter, alignment and the dyslexia-friendly font toggle."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-7.png?rev=3669595","caption":"Quiz Settings, After the Quiz \u2014 customise the results screen and margin-of-error label, with a live preview."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-8.png?rev=3669595","caption":"Messages \u2014 customise the student results email and the new-lead admin notification, including placeholders."},{"src":"https:\/\/ps.w.org\/idiomiq-adaptive-placement-test\/assets\/screenshot-9.png?rev=3669595","caption":"Questions \u2014 manage question banks, add or edit questions, and bulk import or export via CSV."}],"raw_content":"<!--section=description-->\n<p>Students take a short, adaptive CEFR test on your page, and you receive their email address together with an accurate A2\u2013C2 level \u2014 notified by email and logged in your WordPress dashboard. Give visitors something genuinely useful, an instant read on their language level, and get something valuable back: a lead you can actually act on, with no wasted discovery calls.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li><strong>Add it to any page.<\/strong> Paste the shortcode wherever you want the test. Works with any theme \u2014 no code or developer required.<\/li>\n<li><strong>Visitors take the test.<\/strong> The adaptive algorithm adjusts difficulty in real time. No account, no app, no download.<\/li>\n<li><strong>You receive a qualified lead.<\/strong> You capture their email the moment they start, and their CEFR level the moment they finish.<\/li>\n<\/ol>\n\n<p><strong>Why adaptive?<\/strong><\/p>\n\n<p>Instead of asking everyone the same fixed list, the test targets each student's ability and reaches an accurate CEFR estimate in far fewer questions. Under the hood it uses a Bayesian EAP estimator with an Item Response Theory (3PL) model \u2014 the approach behind professional adaptive exams \u2014 but your visitors just see a fast, fair test.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>Pre-built adaptive CEFR test with 150 professionally curated English questions<\/li>\n<li>GDPR-friendly email lead capture, with an optional marketing opt-in<\/li>\n<li>Customisable student results email and new-lead alert emails<\/li>\n<li>Sub-level classification (e.g. \"Strong B2\") for extra nuance<\/li>\n<li>Unlimited question banks and questions \u2014 bulk import and export via CSV<\/li>\n<li>Attempt logs with search, sort, and CSV export<\/li>\n<li>Configurable data retention with automatic daily cleanup<\/li>\n<li>Match your brand colour and edit every word of the on-screen wording<\/li>\n<li>Dyslexia-friendly font toggle (OpenDyslexic)<\/li>\n<li>Rate limiting and honeypot bot defence<\/li>\n<li>Control test length and target confidence<\/li>\n<li>Embed on any page or post with a shortcode<\/li>\n<\/ul>\n\n<p><strong>Your site. Your brand. Your data.<\/strong><\/p>\n\n<p>Everything runs on your own WordPress install. Student data is stored in your database and is never sent to a third party.<\/p>\n\n<p><strong>Shortcode<\/strong><\/p>\n\n<p>Place the test on any page or post:<\/p>\n\n<pre><code>[iiqapt]\n<\/code><\/pre>\n\n<p>To use a specific question bank:<\/p>\n\n<pre><code>[iiqapt bank=\"2\"]\n<\/code><\/pre>\n\n<p><strong>Go further with Pro<\/strong><\/p>\n\n<p>The optional <a href=\"https:\/\/idiomiq.com\/iiqapt\/\">IdiomIQ Adaptive Placement Test Pro<\/a> add-on extends the free plugin with printable student reports, deeper visual customisation, an encouragement overlay, and social sharing, plus 12 months of support and updates.<\/p>\n\n<p><strong>Source code<\/strong><\/p>\n\n<p>Development takes place on <a href=\"https:\/\/github.com\/joerebbeck\/idiomiq-adaptive-placement-test\">GitHub<\/a>.<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin collects and stores personal data as described below. All data is held in your site's own database. The free plugin does not transmit personal data to any third party.<\/p>\n\n<p><strong>Data collected per test attempt<\/strong><\/p>\n\n<ul>\n<li>Student email address \u2014 entered voluntarily before the test begins; used to deliver results by email and stored in the attempt log.<\/li>\n<li>Test outcome: CEFR level, ability estimate (theta), standard error, and test duration \u2014 stored alongside the email to allow administrators to review attempt history.<\/li>\n<li>Date and time of the attempt.<\/li>\n<\/ul>\n\n<p><strong>Storage location:<\/strong> The <code>{prefix}iiqapt_attempt_logs<\/code> database table on your own server.<\/p>\n\n<p><strong>Retention period:<\/strong> Configurable under <strong>Settings \u2192 IdiomIQ Adaptive Placement Test \u2192 General Settings \u2192 Log Retention<\/strong>. The default is 90 days; a daily scheduled event automatically removes records older than this threshold. Administrators can also delete individual records or the entire log from the Attempt Logs admin tab.<\/p>\n\n<p><strong>Data deletion on uninstall:<\/strong> If <strong>Delete data on uninstall<\/strong> is enabled in General Settings, all plugin database tables and stored options are permanently removed when the plugin is uninstalled via the WordPress admin.<\/p>\n\n<p><strong>Rate limiting<\/strong><\/p>\n\n<p>To prevent automated abuse, a hashed representation of the visitor's IP address (MD5 hash \u2014 the raw address is not stored) is written to a WordPress transient at the start and submission of each test attempt. These transients expire automatically after one hour and are not retained as long-term records.<\/p>\n\n<p><strong>Recommended site owner disclosure<\/strong><\/p>\n\n<p>Site owners should include the following information in their own Privacy Policy:<\/p>\n\n<p><em>\"When you take the English level test, we collect your email address and store your result (CEFR level and score) in our database. This information is used to send you your results and to allow our team to review outcomes. Records are automatically deleted after [your configured retention period] days. Your IP address is temporarily hashed and stored for up to one hour for abuse-prevention purposes only.\"<\/em><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>idiomiq-adaptive-placement-test<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly from the WordPress plugin directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to <strong>Settings \u2192 IdiomIQ Adaptive Placement Test<\/strong> to configure question banks, email templates, and quiz behaviour.<\/li>\n<li>Add <code>[iiqapt]<\/code> to any page or post where you want the test to appear.<\/li>\n<li>Import questions via <strong>Questions \u2192 Import CSV<\/strong>, or add them individually through the admin interface.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20students%20need%20an%20account%20or%20an%20app%3F\"><h3>Do students need an account or an app?<\/h3><\/dt>\n<dd><p>No. Visitors take the test right on your page \u2014 no login, no downloads. They enter an email address to receive their results, and that's all.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20the%20test%20to%20a%20page%3F\"><h3>How do I add the test to a page?<\/h3><\/dt>\n<dd><p>Paste the <code>[iiqapt]<\/code> shortcode into any page or post. To use a specific question bank, add its ID: <code>[iiqapt bank=\"2\"]<\/code>. It works with any theme.<\/p><\/dd>\n<dt id=\"what%20information%20do%20i%20collect%20from%20each%20student%3F\"><h3>What information do I collect from each student?<\/h3><\/dt>\n<dd><p>Their email address (entered before the test begins) and their result \u2014 CEFR level, ability estimate, and test duration \u2014 stored in your site's own database. See the Privacy Policy section below for full detail.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20friendly%3F\"><h3>Is it GDPR friendly?<\/h3><\/dt>\n<dd><p>Yes, it is built with GDPR in mind. The email field includes a consent checkbox, you can add an optional follow-up marketing opt-in, IP addresses are only stored temporarily as a one-way hash for abuse prevention, and you control how long results are kept. You remain the data controller and should reference this data collection in your own privacy policy.<\/p><\/dd>\n<dt id=\"how%20accurate%20is%20the%20result%2C%20and%20how%20does%20%22adaptive%22%20work%3F\"><h3>How accurate is the result, and how does \"adaptive\" work?<\/h3><\/dt>\n<dd><p>After each batch of answers the plugin re-estimates the student's ability using a Bayesian EAP \/ IRT (3PL) model and selects the next questions accordingly. The test stops once it reaches your target confidence or the maximum number of question batches, producing an accurate CEFR level (A2\u2013C2) \u2014 often in fewer questions than a fixed-length test. Sub-levels such as \"Strong B2\" add extra nuance.<\/p><\/dd>\n<dt id=\"what%20is%20cefr%3F\"><h3>What is CEFR?<\/h3><\/dt>\n<dd><p>The Common European Framework of Reference for Languages (CEFR) is an international standard for describing language ability. This plugin assesses levels A2 (Elementary) through C2 (Mastery).<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20questions%3F\"><h3>Can I use my own questions?<\/h3><\/dt>\n<dd><p>Yes. Add questions in the admin, or bulk-import them from a CSV file. You can create multiple question banks and target each one with the <code>bank<\/code> shortcode attribute. For import, provide the question stem, four answer options, the correct answer (A\u2013D), and the CEFR level (A2, B1, B2, C1, or C2).<\/p><\/dd>\n<dt id=\"can%20i%20match%20my%20brand%20and%20change%20the%20wording%3F\"><h3>Can I match my brand and change the wording?<\/h3><\/dt>\n<dd><p>Yes. Set a primary colour and edit every on-screen string \u2014 start screen, buttons, loading and results text \u2014 as well as the student and admin email templates, all from the settings screen.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20free%20and%20pro%3F\"><h3>What is the difference between Free and Pro?<\/h3><\/dt>\n<dd><p>The free plugin is fully functional: unlimited question banks and questions, lead-capture emails, attempt logs, CSV import and export, and full customisation of wording and colour. The optional Pro add-on adds printable student reports, deeper visual customisation, an encouragement overlay, and social sharing, with 12 months of support and updates. Details at https:\/\/idiomiq.com\/iiqapt\/.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Fixed the settings live preview so HTML in the start-screen title, subtitle, body and follow-up consent message now renders correctly instead of showing the raw tags.<\/li>\n<li>Refreshed the plugin description and readme.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Fixed a MySQL syntax error logged on activation \u2014 the questions index is now declared in the table schema (dbDelta) instead of an unsupported <code>CREATE INDEX IF NOT EXISTS<\/code> statement.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>Security: added explicit capability and nonce verification to the settings save-tracking notice before any state is written.<\/li>\n<li>Fixed the Plugin URI to point to the live plugin page.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Standardised all internal code naming to a single <code>iiqapt<\/code> prefix (functions, options, database tables, CSS\/JS, hooks).<\/li>\n<li>The shortcode is now <code>[iiqapt]<\/code> (previously <code>[adaptive_level_test]<\/code>).<\/li>\n<li>Reordered the settings tabs \u2014 Attempt Logs first, General Settings last.<\/li>\n<li>Adaptive algorithm: a top-level (C2) student now continues until the confidence target or batch limit, symmetric with the A2 floor.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Renamed plugin to IdiomIQ Adaptive Placement Test.<\/li>\n<li>Removed question bank and question count limits \u2014 the free plugin is now fully unlimited.<\/li>\n<li>Converted all inline script and style tags to use the WordPress enqueue API.<\/li>\n<li>Extracted admin JavaScript to external files for better caching and CSP compatibility.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Initial public release as a standalone free plugin.<\/li>\n<li>Core adaptive quiz with Bayesian EAP \/ IRT 3PL algorithm.<\/li>\n<li>Unlimited question banks and questions per bank.<\/li>\n<li>CSV import for bulk question upload.<\/li>\n<li>Student and admin result notification emails.<\/li>\n<li>Attempt log with search, sort, per-column filtering, and CSV export.<\/li>\n<li>Dyslexia-friendly OpenDyslexic font toggle.<\/li>\n<li>GDPR follow-up consent checkbox and honeypot spam protection.<\/li>\n<li>Rate limiting via hashed IP transients (1-hour TTL).<\/li>\n<li>Configurable log retention with daily scheduled cleanup.<\/li>\n<li>Option to delete all plugin data on uninstall.<\/li>\n<\/ul>","raw_excerpt":"Built for language schools, English tutors, and course providers, the Adaptive Placement Test turns website visitors into pre-qualified leads.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/354917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=354917"}],"author":[{"embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/joerebbeck"}],"wp:attachment":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=354917"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=354917"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=354917"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=354917"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=354917"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=354917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}