Installation

1
Upload the plugin
WordPress Admin → Plugins → Add New → Upload Plugin → select secureexam-2.9.12.zip
2
Activate
Click Activate Plugin. Database tables are created automatically on first activation.
3
Save Permalinks — CRITICAL
Go to Settings → Permalinks and click Save Changes (even without changing anything). Without this, student exam links and the teacher portal will show "Page not found".
4
Configure school details
SecureExam → Settings → enter school name, initials, and upload logo.
💡
When updating to a new version, use WordPress → Dashboard → Updates. The plugin handles database upgrades and URL re-registration automatically — no manual deactivate/reactivate needed.

Requirements

ItemMinimumNotes
WordPress5.8+6.0+ recommended
PHP7.4+8.0+ recommended
MySQL5.7+
HTTPS/SSLRequired for Strict mode cameraFree via Let's Encrypt or your hosting control panel
Student browserChrome 80+, Firefox 75+, Safari 14+Latest Chrome recommended

First-Time Setup

After installation go to SecureExam → Settings and configure:

Teacher Portal

SecureExam ships with a fully custom front-end portal for teachers. Teachers never see the WordPress admin — they get their own branded dashboard at /teacher/ with everything they need.

💡
Admins continue to use the WordPress admin as normal. The portal is an extra layer for exam teachers — not a replacement for the admin.

Portal URLs

URLWho sees itWhat it does
/teacher-login/EveryoneTeacher sign-in page (standalone, no WP branding)
/teacher-setup/?token=…Invited teachersFirst-time account setup via invite link
/teacher/dashboardLogged-in teachersStats, recent exams, active students
/teacher/examsLogged-in teachersList and manage their exams
/teacher/createLogged-in teachers7-step exam creation wizard
/teacher/resultsLogged-in teachersView student submissions
/teacher/gradingLogged-in teachersGrade manual questions
/teacher/bankLogged-in teachersQuestion bank
/teacher/teachersAdmins onlyManage teachers & send invites
If any portal URL returns "Page not found", go to WordPress → Settings → Permalinks → Save Changes. This re-registers all URL patterns.

Inviting Teachers

Teachers are added via a token-based invite system — no sharing passwords in plain text.

1
Log in to the portal as an Administrator. Go to Teachers in the sidebar.
2
Fill in the teacher's Full Name and Email Address in the "Invite a Teacher" panel, then click Send Invite Email.
3
The teacher receives an HTML email with a secure link. The link is valid for 48 hours.
4
The teacher clicks the link, chooses a username and password, and is taken straight to their dashboard — no WordPress admin involved.

Pending invites

The Teachers page shows any invites not yet accepted, with the expiry time. Click Resend to issue a fresh link (this invalidates the old one).

Managing existing teachers

ActionWhat happens
Reset PasswordGenerates a new random password and emails it to the teacher
Change EmailUpdates the teacher's email address (duplicate check applied)
Suspend / ActivateSuspends the account and destroys all active sessions; activate to restore access
DeletePermanently removes the account; optionally deletes all their exams and submissions

Portal Pages Reference

Dashboard

At-a-glance stats: total exams, pending grades, active submissions right now, plus a table of recent exams and pending manual grades to action quickly.

My Exams

Full list of the teacher's exams. Actions: Edit (re-opens the wizard), Results (jumps to that exam's results), Copy Link, Delete (draft only). Filter by status: All / Draft / Published / Closed / Expired.

Create Exam

The 7-step exam wizard. Auto-saves at every step. After publishing you land on My Exams. See Creating an Exam below for the full walkthrough.

Results

Select an exam from the dropdown to view all submissions: per-student score, duration, violations, status. Export CSV or view full answers from here.

Grading

Exam cards are shown grouped by exam. Click Open → on an exam card to see all its submissions. Click Grade next to any student to open the grading panel for that submission.

Question Bank

Search, browse, and import banked questions into a new exam. Delete questions you no longer need.

Creating an Exam

Go to New Exam in the portal. A 7-step wizard guides you:

StepWhat to do
1 — DetailsTitle, instructions, duration (minutes), expiry date
2 — QuestionsAdd questions of any type with marks and optional tag
3 — ScoringReview marks breakdown, set optional pass mark %
4 — Anti-CheatChoose Basic / Standard / Strict, set violation limit
5 — PreviewOpen student preview in a new tab
6 — SettingsAttempts allowed, when students see their score
7 — PublishClick "Publish Now" to go live and get the student link
💡
The wizard auto-saves at every step. Click Save as Draft at any time and return later via My Exams → Edit.

Question Types

Auto-Graded

TypeTeacher sets upStudent answers
Multiple ChoiceWrite question + 2–6 options. Mark ONE correct with a radio button.Taps one option. Filled circle = selected. Can change before submitting.
Multi-AnswerLike MCQ — mark ALL correct options with checkboxes. Full marks only if student picks every correct one and no wrong ones.Ticks every correct option. Must get all right for marks.
True / FalseWrite a statement, mark it True or False.Clicks True or False. No partial credit.
Short AnswerEnter all accepted answers, one per line. Case-insensitive check.Types a short word/phrase. Spelling must match.
Fill in the BlankWrite sentence with ___ showing the blank. List accepted words below.Types the missing word.
Image MCQPaste image URL + write options. Mark one correct.Studies the image shown above the options, selects one answer.
Audio MCQPaste audio URL + write options. Mark one correct.Plays audio (can replay), selects one answer.

Manual-Graded (you mark after exam)

TypeTeacher sets upStudent answers
EssayWrite the question. No correct answer needed — you assign marks in Grading.Types a long essay. Word counter shown. Auto-saves every 30s.
SpeakingWrite the question/prompt. Students record audio. You mark after listening.Presses mic to record, stops when done. Can re-record.
Matching PairsAdd items: FIRST add all Column A items, THEN all Column B items. System splits the list in half automatically. Example: add "Paris", "Berlin", "France", "Germany" → students match Paris→France, Berlin→Germany.Uses a dropdown next to each Column A item to select the matching Column B answer.
OrderingAdd items in the CORRECT order. Students see them shuffled and must rearrange.Drags items using the ⠿ handle to put them in the right sequence.

Anti-Cheat Modes

FeatureBasicStandardStrict
Block right-click
Block copy / paste / cut
Block keyboard shortcuts (Ctrl+C etc.)
Log tab switching
Force fullscreen
Camera required throughout
Window blur/focus detection
🔒
Strict mode requires HTTPS. Browsers block camera access on HTTP. Your site needs an SSL certificate. Most hosting providers offer free SSL — check your cPanel or hosting dashboard.

When a student hits the violation limit you set (default 3), their session is locked. You can unlock it from the Results page. If "Warn student" is on, they see a popup on each violation before locking.

Publishing & Sharing

On Step 7, click Publish Now. A unique link is generated:

https://yourschool.com/exam/a1b2c3d4

Share via: Copy Link · WhatsApp button · Regenerate Link (old link stops working immediately)

If the student link shows "Page not found" — go to WordPress → Settings → Permalinks → Save Changes.

Viewing Results

Go to Results → select an exam. You see:

The teacher name who created the exam is shown on each exam card so admins can see at a glance which teacher owns each exam.

Manual Grading

Go to Grading. The page shows exam cards grouped by exam, each card showing how many submissions are pending manual review.

  1. Click "Open →" on an exam card to see all its submissions in a list
  2. Click "Grade" next to a student to open their grading screen
  3. In the grading screen:
    • Left: question list with status (Auto ✓/✗, Pending, Graded)
    • Right: student's answer, marks input, feedback textarea
    • Click Save Grade — total score updates automatically
    • Click Next Pending → to move to the next ungraded question

After all manual questions for a submission are graded, the score is released automatically (if "After Grading" score-release is set on the exam).

Question Bank

When adding questions in the wizard, tick "Save to Question Bank" to reuse them in future exams. Go to Question Bank to search, add, or delete banked questions.

Student Flow

1
Registration — Student enters name, email, optional phone. Instructions and duration are shown before starting.
2
Camera grant (Strict only) — Browser asks for camera permission. Student must click Allow. Exam will not start until permission is granted.
3
Exam — Questions one at a time. Left nav shows answered/flagged status. Timer counts down. Answers auto-save every 30s.
4
Flagging — Students can flag questions to revisit. Flagged questions show amber in the navigator.
5
Submit — Confirmation dialog shows the count of unanswered questions. Cannot change answers after confirming.
6
Result — Score shown immediately (if "Immediate" release is set), or a "Submitted — results pending" message.

Camera & HTTPS

Strict mode requires the student's camera to remain on for the duration of the exam. This uses the browser's getUserMedia API, which browsers only allow on HTTPS. This is an enforced browser security rule that cannot be bypassed.

Free HTTPS setup

Camera error messages

ErrorCauseFix
"Camera requires HTTPS"Site on HTTPAdd an SSL certificate (see above)
"Permission denied"Student clicked BlockClick lock icon in address bar → Allow → Refresh page
"No camera found"No camera on deviceStudent must use a device with a camera for Strict exams
"Camera in use"Another app (Zoom, Teams) using the cameraClose other video apps, then refresh

Settings Reference

School Identity

SettingDescription
School NameShown on every student-facing screen
School InitialsBadge shown when no logo uploaded (max 4 chars, e.g. "TMS")
School LogoUpload via Media Library. Shown on registration and exam screens.
Accent ColourPrimary colour used throughout the student and teacher UI
Sidebar ColourBackground colour of the teacher portal sidebar

Exam Defaults

SettingDescription
Default DurationPre-filled in new exams (minutes)
Default Anti-CheatPre-selected mode for new exams (Basic / Standard / Strict)

Notifications

SettingDescription
Notify teacher on submissionEmail sent to the exam's teacher each time a student submits
Notify student on submissionConfirmation/receipt email sent to the student after submitting

Camera & Proctoring

SettingDescription
Store webcam snapshotsWhen enabled, a webcam image is captured from the student at regular intervals during Strict-mode exams and stored for teacher review
Snapshot interval (seconds)How frequently snapshots are taken. Default is 300 seconds (every 5 minutes). Minimum 30 seconds.

Security

SettingDescription
Trust proxy / Cloudflare headersEnable only if your site is behind Cloudflare or a reverse proxy. Allows accurate IP detection for rate limiting. Leave off if unsure — enabling on a direct server allows IP spoofing.

Danger Zone

SettingDescription
Delete All DataType DELETE to permanently remove all exams, questions, submissions, and answers. Cannot be undone.

Shortcode

[secureexam id="12"]
[secureexam slug="a1b2c3d4"]

Embeds the full exam interface inside any WordPress page or post. Find the exam ID in the URL when viewing the exam in the admin.

REST API

Base: https://yoursite.com/wp-json/secureexam/v1/

MethodEndpointAuthDescription
GET/exam/{slug}NoneGet exam info + nonce
POST/startNoneStart exam, receive session token + questions
POST/answerSession tokenSave a student answer (max 2 MB payload)
POST/heartbeatSession tokenSync timer, check session status
POST/submitSession tokenSubmit the exam
POST/violationSession tokenLog an anti-cheat violation
GET/examsWP loginList teacher's exams
GET/exams/{id}/resultsWP loginGet submissions for an exam
GET/exams/{id}/statsWP loginGet exam statistics
💡
Student endpoints use rate limiting: /start (10 req/min), /answer (60 req/min), /submit (5 req/min). Requests over the limit receive HTTP 429.

CSV Export

From the Results page → Export CSV:

Files are Excel-compatible (UTF-8 BOM).

FAQ

Student link shows "Page not found"

Go to WordPress → Settings → Permalinks → Save Changes. This re-registers the /exam/ URL pattern. You may need to do this after first installing the plugin.

Teacher portal shows "Page not found"

Same fix: WordPress → Settings → Permalinks → Save Changes. This re-registers /teacher-login/ and all /teacher/* URLs.

Students submitted but nothing shows in Results

Check: (1) Is the exam Published, not Draft? (2) Go to Grading → select the exam → all submissions appear there regardless of grading status.

A student's session is locked

Results → select the exam → find the student → click Unlock. Their session resumes from where they left off with answers preserved.

Can students resume after a browser crash?

Yes. Answers auto-save every 30s and the timer syncs every 15s. If a student returns to the exam link, their previous answers are preserved and the timer continues from where it was.

Camera doesn't turn on in Strict mode

Your site must be on HTTPS — browsers block camera access on HTTP. Also confirm the student clicks Allow when the browser shows the camera permission popup. If they clicked Block, they need to click the lock icon in the address bar, set Camera to Allow, and refresh.

How do I add a teacher?

Portal → Teachers → fill in name + email → Send Invite Email. The teacher receives a secure link to set their own username and password. Invites expire after 48 hours; click Resend to refresh the link.

The plugin updated but something looks wrong

Go to WordPress → Settings → Permalinks → Save Changes. If issues persist, deactivate and reactivate the plugin — this forces a full table check and URL re-registration.

Does it work on mobile?

Yes, the student exam screen is fully responsive. Camera works on Chrome for Android and Safari on iOS 14.3+. The admin and teacher portal are also mobile-friendly, though a desktop is recommended for creating and grading exams.

Audit Log

The audit log provides a tamper-evident record of every significant action taken by admins and teachers. It is visible to admins only — teachers have no access.

Find it in wp-admin → SecureExam → 🔍 Audit Log.

What is logged

EventTriggered byDetail recorded
Answer gradedTeacher saves a mark on a manually-graded questionAnswer ID, marks awarded, updated total score
Attempt resetTeacher resets a student's entire submissionStudent name & email (preserved before deletion)
Session unlockedTeacher unlocks a violation-locked sessionStudent name & email
Result email sentTeacher manually sends the score email to a studentStudent name & email, score, total possible marks

Filtering

The log can be filtered by Exam, Actor (the admin or teacher who performed the action), and Action type. Results are paginated at 50 per page, newest first.

⚠️
Audit log entries are append-only — there is no delete button, even for admins. This is by design. If you need to clear old entries, do so directly in the database via phpMyAdmin (TRUNCATE wp_se_audit_log), but be aware this removes all history permanently.

Known Limitations