Bird
Raised Fist0
Wordpressframework~20 mins

Plugin file structure in Wordpress - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Plugin Structure Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Identify the main plugin file in a WordPress plugin structure
Given a WordPress plugin folder with these files:

- my-plugin.php
- readme.txt
- includes/functions.php
- assets/style.css

Which file is the main plugin file that WordPress uses to activate the plugin?
Aincludes/functions.php
Breadme.txt
Cmy-plugin.php
Dassets/style.css
Attempts:
2 left
💡 Hint
The main plugin file is the one that contains the plugin header comment and is directly inside the plugin folder.
❓ component_behavior
intermediate
1:30remaining
What happens if the main plugin file is missing?
If a WordPress plugin folder does not contain a main PHP file with the plugin header, what will WordPress do when you try to activate it?
AWordPress will not list the plugin in the admin plugins page.
BWordPress will activate the plugin but show a warning.
CWordPress will activate the plugin without any issues.
DWordPress will delete the plugin folder automatically.
Attempts:
2 left
💡 Hint
WordPress needs the main plugin file to recognize a plugin.
📝 Syntax
advanced
2:00remaining
Identify the correct plugin header format
Which of the following plugin header comments is correctly formatted for WordPress to recognize the plugin?
A
<?php
/*
Plugin-Name: My Plugin
Description: Does something useful.
Version: 1.0
*/
B
<?php
/*
Plugin Name: My Plugin
Description: Does something useful.
Version: 1.0
*/
C
<?php
// Plugin Name: My Plugin
// Description: Does something useful.
// Version: 1.0
D
<?php
/*
Plugin Name My Plugin
Description: Does something useful.
Version: 1.0
*/
Attempts:
2 left
💡 Hint
The plugin header must be inside a block comment with exact field names.
🔧 Debug
advanced
2:00remaining
Why does the plugin not load the included PHP file?
A plugin has this structure:

- my-plugin.php
- includes/functions.php

Inside my-plugin.php there is this code:
include 'includes/functions.php';

But when activating the plugin, functions from functions.php are not available. What is the likely cause?
AThe include path is relative to the current working directory, not the plugin file, so it fails.
BThe functions.php file has a syntax error preventing it from loading.
CThe include statement should use require_once instead of include.
DThe plugin header is missing in functions.php.
Attempts:
2 left
💡 Hint
Relative paths in PHP includes depend on the current working directory, not the file location.
❓ state_output
expert
2:30remaining
What is the output of the plugin activation hook?
Consider this plugin main file code:
/*
Plugin Name: Test Plugin
*/

register_activation_hook(__FILE__, function() {
  update_option('test_plugin_activated', time());
});

add_action('admin_notices', function() {
  if ($time = get_option('test_plugin_activated')) {
    echo '<div class="notice notice-success">Plugin activated at: ' . date('H:i:s', $time) . '</div>';
    delete_option('test_plugin_activated');
  }
});

What will the admin see immediately after activating this plugin?
AA blank page because the plugin exits after activation.
BNo notice because the option is deleted before admin_notices runs.
CAn error because update_option cannot be called in activation hook.
DA success notice showing the exact time of activation in H:i:s format.
Attempts:
2 left
💡 Hint
The activation hook sets an option with the current time, which is then read and shown in the admin notices.

Practice

(1/5)
1. Which file is required as the main entry point for a WordPress plugin?
easy
A. A PHP file with plugin header comments
B. A CSS file for styling the plugin
C. A JavaScript file for plugin scripts
D. An image file for the plugin icon

Solution

  1. Step 1: Understand the main plugin file role

    The main plugin file must be a PHP file that contains header comments describing the plugin. This file acts as the entry point for WordPress to recognize and load the plugin.
  2. Step 2: Differentiate file types in plugin structure

    CSS, JavaScript, and image files are used for styling, scripting, and visuals but are not the main plugin file.
  3. Final Answer:

    A PHP file with plugin header comments -> Option A
  4. Quick Check:

    Main plugin file = PHP with header [OK]
Hint: Main plugin file always has PHP header comments [OK]
Common Mistakes:
  • Choosing CSS or JS files as main plugin file
  • Thinking image files can be main plugin file
  • Ignoring the required plugin header comments
2. Which of the following is the correct way to organize plugin files for better structure?
easy
A. Put all PHP, CSS, and JS files in the root plugin folder
B. Keep only the main PHP file and no folders
C. Place all files inside a single 'assets' folder
D. Separate PHP files into a 'includes' folder and assets into 'assets' folder

Solution

  1. Step 1: Understand folder organization best practices

    Separating PHP files into an 'includes' folder and assets like CSS and JS into an 'assets' folder keeps the plugin organized and easier to maintain.
  2. Step 2: Evaluate other options

    Putting all files in root or a single folder makes the plugin messy. Having no folders limits scalability.
  3. Final Answer:

    Separate PHP files into a 'includes' folder and assets into 'assets' folder -> Option D
  4. Quick Check:

    Organize by type in folders = B [OK]
Hint: Use 'includes' for PHP and 'assets' for CSS/JS [OK]
Common Mistakes:
  • Mixing all files in root folder
  • Putting everything inside 'assets' folder
  • Not using folders at all
3. Given this plugin folder structure:
my-plugin/
  my-plugin.php
  includes/
    functions.php
  assets/
    style.css
    script.js

Which file should contain the plugin header comments?
medium
A. includes/functions.php
B. my-plugin.php
C. assets/script.js
D. assets/style.css

Solution

  1. Step 1: Identify the main plugin file

    The main plugin file is the one in the root folder named after the plugin, here 'my-plugin.php'. This file must have the plugin header comments.
  2. Step 2: Understand roles of other files

    Files in 'includes' and 'assets' folders hold supporting code and styles/scripts but do not contain the plugin header.
  3. Final Answer:

    my-plugin.php -> Option B
  4. Quick Check:

    Main plugin file = my-plugin.php [OK]
Hint: Plugin header is in root PHP file named after plugin [OK]
Common Mistakes:
  • Putting header in includes/functions.php
  • Thinking CSS or JS files hold plugin info
  • Confusing folder files with main plugin file
4. You see this plugin structure:
plugin-folder/
  plugin-folder.php
  includes.php
  assets/
    style.css

What is wrong with this structure?
medium
A. The 'assets' folder should be named 'styles'
B. The main plugin file should be named differently
C. The 'includes.php' file should be a folder named 'includes'
D. There should be no CSS files in the plugin

Solution

  1. Step 1: Check folder vs file naming conventions

    Typically, 'includes' is a folder holding PHP files, not a single PHP file named 'includes.php'. This breaks organization.
  2. Step 2: Validate other options

    The main plugin file name is fine if it matches the folder. 'assets' is a common folder name for CSS/JS. CSS files are allowed.
  3. Final Answer:

    The 'includes.php' file should be a folder named 'includes' -> Option C
  4. Quick Check:

    'includes' must be a folder, not a file [OK]
Hint: 'includes' is a folder, not a single PHP file [OK]
Common Mistakes:
  • Renaming main plugin file unnecessarily
  • Renaming 'assets' folder incorrectly
  • Thinking CSS files are not allowed
5. You want to add language support to your plugin. Which is the best way to organize your plugin files?
hard
A. Add a 'languages' folder for translation files and keep main PHP file in root
B. Put translation files inside the 'assets' folder with CSS and JS
C. Include translation files directly inside the main PHP file
D. Create a separate plugin just for translations

Solution

  1. Step 1: Understand language file organization

    WordPress plugins commonly use a 'languages' folder to store translation files (.mo, .po). This keeps translations separate and organized.
  2. Step 2: Evaluate other options

    Putting translations in 'assets' mixes code and assets. Including translations in PHP file is not practical. Separate plugin for translations is unnecessary.
  3. Final Answer:

    Add a 'languages' folder for translation files and keep main PHP file in root -> Option A
  4. Quick Check:

    Use 'languages' folder for translations [OK]
Hint: Use 'languages' folder for translations, not 'assets' [OK]
Common Mistakes:
  • Mixing translation files with CSS/JS
  • Embedding translations inside PHP code
  • Creating separate plugin for translations
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard