
Markdown Quiz and Survey WordPress Plugin
A WordPress plugin for easily creating quizzes/surveys through markdown or CSV.
DownloadMain Features
Import from markdown/CSV
Through create a quiz/survey from a markdown file, you can even get a what-you-see-is-what-you-get quiz/survey.
Radio, checbox, fill-blank
Support single-choice, multiple-choice and fill in the blank questions.
Images, formulas, code...
A question can include images, formulas, code, tables and any other HTML content you want.
Anyone can respond
Allow setting unlogged-in users to take quizzes/surveys.
Satisfication surveys
Support specifying an value to indicate satisfication level for each option.
Shortcode
A quiz/survey can be insterted in any page/post with a shortcode.
How it works
Create a quiz/survey
Creating a quiz is very simple. Choose a markdown/CSV file and import, then a quiz will be created which you can see in the quiz list. Creating a survey is similiar.
1. Create a markdown(or CSV) file:

2. Create a quiz by importing the markdown(or CSV) file:

Quiz list
Quiz list shows front pages, taken count and operations of all the quizzes.

Take a quiz/survey
Click a quiz title in the quiz list, it is redirect to the taking quiz page.

Report
Quiz Report
Click a quiz's "View Reports" button in the quiz list to see the detailed results.

How to use
To create a quiz or survey, you just need to create a markdown or CSV file.
Quiz markdown file
To write a markdown for a quiz is super easy. You can optionly include a YAML(information between ---
and ---
) part to specifiy some meta information.
A markdown file example for a quiz
A rendered markdown file:

A markdown source file:
---
post_title: Math quiz
quiz_type: quiz
---
## mc
When I am as old as my older brother is today, my brother will be twice as old as I am today.
Which ages are the possible cases?
- [ ] I am 9, my brother is 13
- [x] I am 8, my brother is 12
- [x] I am 22, my brother is 33
- [x] I am 16, my brother is 24
## fb
Evaluate the following expression for x = -5:
$\frac {3(x+3^2)}{2}$ = ___
- [x] 6
Syntax
A YAML part is optional, you can set the quiz/survey name here with post_titile
.
A question contains three parts:
Question type
Use headline of level 2
##
to start a new question and put the question type here. A question type can be:- SC (Single choice question)
- MC (Multiple choice quesiton)
- FB (Fill in the blank question)
Question title
Write question title whatever you want
Question options(and/or answers)
Use a task list to present options. If an option is an answer, check the option.
ForFB
question, there will be only one checked item with content to present the answer.
Latex
First you need to install an extra plugin to enable Latex. WP QuickLaTex is a good one (Note: Jetpack's Latex feature may lead to messy display).
Suppose you are using WP QuickLaTex to enable Latex, just put a [latexpage]
tag at the first question's title beginning to make the remaining latex easy to write as demonstrated in the above example. Then you can write a Latex formula wrapped in $...$
anywhere you want. And this is a format of latex that is supported by a markdown editor, such as Typora, it is a super good markdown editor.
Almost every latex plugin supports a more comlicated syntax, surronding a formula with [latex] ... [/latex]
, yor can pick this format as well if you like.
Survey markdown file
A survey markdown file is similar. If you want to set a vaure for an option, like you want a satification survey, just put the value inside []
like below:
## sc
How do you think about its ease of use?
- [5] Very good
- [4] Good
- [3] OK
- [2] Bad
- [1] Very Bad
Quiz CSV file
You may create an Excel file and save it as a CSV file. A CSV file for a quiz contains one or more questions, one question is defined in one line, except the first line is used as column titles. Its structure is as below:
No. | Type | Title | Option | IsAnswer | Option | IsAnswer | Option | IsAnswer | … |
---|---|---|---|---|---|---|---|---|---|
SC, MC or FB | title | option1 | 1 or 0 | option2 | 1 or 0 | … |
Each line contains three fixed columns for defining the question part, the following columns are used to define its options, one option takes two column: optionTitle and isAnswer.
Note:
The count of options of each question does not need to be the same. Just leave the extra columns empty.
Columns
No. | Question number, can be leaved as empty |
---|---|
Type | Question type, value can be SC (Single-choice), MS(Multiple-choice) or FB(Fill in the blank) |
Title | Question title |
Option | Option title |
IsAnswer | Specifies whether the option is correct1 indicates yes0 indicates no |
... | More options |
For titles, no matter it is question title or option title, it can include any content such as images, audios, videos with HTML tags or formulas (needs to install extra plugin to support Latex syntax)
- To add a new paragraph, use <br> to break a line or use <p></p> tag.
- To add an image, first upload it to the server and then use <img src=""> tag.
- To add a formula, you need to enable Latex feature by installing a plugin like WP QuickLaTex (Jetpack's Latex feature may lead to messy display). The below CSV example shows how to write formulas. Most Latex plugins support such a formula format.
Example
"Math quiz.csv" file for a quiz with the file name as its quiz title:
No. | Type | Title | Option | IsAnswer | Option | IsAnswer | ||
---|---|---|---|---|---|---|---|---|
FB | "Evaluate the following expression for x = -5: [latex]\frac {3(x+3^2)}{2}[/latex]" | 6 | 1 | |||||
SC | "Calculate the area of the following triangle. <img src='/wp-content/uploads/quiz-demo/area-triangle.jpg'> The units may be mixed." | [latex]12cm^2[/latex] | 0 | [latex]140cm^2[/latex] | 0 | [latex]14cm^2[/latex] | 1 | |
MC | "When I am as old as my older brother is today, my brother will be twice as old as I am today. Which ages are the possible cases?" | "I am 9, my brother is 13"dor | 0 | "I am 8, my brother is 12" | 1 | "I am 22, my brother is 33" | 1 |
Note:
You don't need to fill all the titles in the first line, they are just used to make it easy to read.
Survey CSV file
A CSV file for a survey is similar to that for a quiz. The difference is an option is defined by "Option" and "Value" columns instead of "Option" and "IsAnswer".
Option | Option title |
---|---|
Value | Specifies an integer value for the option- For normal surveys, just set it as 1- For satisfaction surveys, set a number indicating a satisfaction level for the option |
Example
No. | Type | Title | Option | Value | Option | Value | ||||
---|---|---|---|---|---|---|---|---|---|---|
MC | Which social platforms do you use? | 1 | 1 | Youtube | 1 | Other | 1 |
Troubleshooting
Import failed for "The csv file is not UTF-8 encoded"
The imported CSV files needs to be UTF-8 encoded. You may use Notepad++ to convert the CSV to UTF-8 encod:
Notepad++ > Encoding > Convert to UTF-8.
Import failed for "Please check the columns count"
Make sure that each line has 3 fixed columns and even columns for options.
Backslashes in the file are missing.
Use double backslashes \\
instead of \
.
Hi GloomyCorner this is a great plugin, I have a question how to put a survey or qwiz on a selected page. Can it be done with shortcode or some code?
Second question 🙂 how to do a survey or quiz without logging in
Why is there an error: “Failed to move the imported file”, while uploading the demo markdown or csv file?
The error message means that the file has been uploaded to the site server, however the plugin is failed to move it to the wp-content/uploads directory.\n Please make sure the site user has write access to the upload directory(wp-content/uploads). You can check whether outher plugins can upload a file successfully or not.\n If there are still problems, please let we know.
The error message means that the file has been uploaded to the site server, however the plugin is failed to move it to the wp-content/uploads directory.
Please make sure the site user has write access to the upload directory(wp-content/uploads). You can check whether other plugins can upload a file successfully or not.
If there are still problems, please let we know.