Made Neat

WordPress Developer Assessment

Before you begin

We want to see how you think — not how quickly you can look something up. Please complete this assessment without using Google, AI tools, documentation, or any external references. If you're unsure of something, tell us what you would do to figure it out — that's a legitimate and valued answer.

There is no time limit. A thorough, well-reasoned answer that takes you an hour is worth far more to us than a rushed answer that takes ten minutes. Read each question carefully before you begin writing. We are genuinely interested in your depth of understanding, your reasoning process, and how you approach problems — not just whether you land on the right answer.

Paste is disabled on most fields to keep the playing field fair. Complete the assessment in one sitting if you can. When you're ready to begin, fill in your details below.

Please enter your first name.
Please enter your last name.
Please enter a valid email address.
Please enter your nationality.
Please select your country.
Section 1 of 6 — Section A — WordPress Fundamentals
Section A — WordPress Fundamentals
Question Q1
What is the correct way to include a CSS file in a WordPress theme?
This question is required.
Question Q2
Which of the following statements about action hooks and filter hooks is correct?
This question is required.
Question Q3
What does this code do? if ( ! defined( 'ABSPATH' ) ) { die; }
This question is required.
Question Q4
What is the computed colour of the paragraph text in this code, and why?
<style>
  #page .content p { color: blue; }
  .content p       { color: green !important; }
  #page p          { color: red; }
  p                { color: orange !important; }
</style>
<div id="page">
  <div class="content">
    <p>What colour am I?</p>
  </div>
</div>
This question is required.
Question Q5
What is the default priority for WordPress action hooks and filters — and why would you ever change it?

💡 Consider: what does "priority" actually control about the order hooks run? And give a concrete example of a real situation where you'd need to change it.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q6
Within the block editor, blocks are built and edited using JavaScript. How are blocks rendered on the front end of a WordPress site?

💡 Think about the two different ways WordPress can render a block on the front end — they work quite differently. Explain both, and describe when you'd choose one approach over the other.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Section 2 of 6 — Section B — Frontend & Performance
Section B — Frontend & Performance
Question Q7
A page on a client's site scores 44 on Google PageSpeed Insights for mobile. You've just been handed access. What are the first three things you check, and why those first?

💡 Don't just list tools — explain your reasoning. Why those three checks first, and not something else?

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q8
Write a WordPress function that changes the default excerpt length to 50 words.
⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q9
You have inherited a theme where all scripts and styles are hardcoded directly into header.php using <script> and <link> tags rather than enqueued through functions.php. What problems does this cause, and what do you do about it?
⌨️ Typing only — paste is disabled for this field.
This question is required.
Section 3 of 6 — Section C — Security
Section C — Security
Question Q10
You have a front-end form on a WordPress site that submits data to be saved to the database. Walk through every step you'd take to handle that data safely.

💡 Assume the form submits to a custom handler and the data is being saved using $wpdb. Walk through every safety step you'd take, from the moment the form is submitted to the moment the data lands in the database.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q11
List every method you know of to prevent WordPress theme or plugin files from being edited or accessed inappropriately — both through the dashboard and at the server level.

💡 List as many methods as you can — code-based, server-level, and plugin-based. For each one, briefly explain what it does and why it helps.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q12
Beyond the file editor, what else would you do to harden a fresh WordPress installation before handing it to a client?

💡 Think beyond just the theme editor. Cover wp-config.php settings, file permissions, user roles, and anything else you'd consider part of a hardened WordPress setup.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Section 4 of 6 — Section D — Accessibility
Section D — Accessibility
Question Q13
A client's site has a hamburger menu that works with a mouse but is completely inaccessible via keyboard. Without seeing the code, what are the most likely causes and how would you approach fixing it?

💡 Walk through the most likely root causes first, then explain how you'd confirm each one. What specifically would you look for in the markup and CSS?

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q14
You have an input field. You want the label text "Full Name" to be read by screen readers but not displayed on screen. How do you accomplish this — and what would you NOT do, and why?

💡 Mention any ARIA attributes, focus management, and keyboard event handling you'd expect to see — and what's missing when the menu is broken.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q15
A client asks you to add a modal dialog to their site. What accessibility requirements must it meet to be considered properly implemented?
⌨️ Typing only — paste is disabled for this field.
This question is required.
Section 5 of 6 — Section E — Troubleshooting
Section E — Troubleshooting
Question Q16
A client calls saying the site went completely white after they updated a plugin. Walk through exactly what you do — step by step.

💡 Walk through your steps methodically — what do you check first and why? Include how you'd identify the offending plugin when the admin is inaccessible.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q17
You've added a new script using wp_enqueue_script but it's not loading — the page source doesn't show it at all. What do you check?

💡 Be specific: what do you check, in what order, and why? Think about the difference between a hook that's registered but not loading vs. one that's conditionally excluded.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q18
A client's contact form stopped sending emails after their hosting was migrated to a new server. No error is shown on the front end. How do you diagnose and fix it?
⌨️ Typing only — paste is disabled for this field.
This question is required.
Section 6 of 6 — Section F — Open Response
Section F — Open Response
Question Q19
Explain in your own words what the WordPress template hierarchy is and why it matters in theme development.

💡 Be specific — reference how WordPress resolves template files and give a real example of when knowing the hierarchy saved you time or solved a problem.

⌨️ Typing only — paste is disabled for this field.
This question is required.
Question Q20
Tell us about a specific WordPress project you're proud of — and why we should hire you.

💡 Tell us about a specific WordPress project you're proud of. What was the brief, what did you build or solve, and what would you do differently now? Then tell us why you'd be a good fit for Made Neat.

This question is required.

Assessing your responses…

This usually takes 20–30 seconds. Please don't close this tab.

Submission received

Thank you for completing the Made Neat WordPress Developer Assessment. Our team will review your results and be in touch shortly.