Bird
Raised Fist0
Wordpressframework~10 mins

Custom endpoint registration in Wordpress - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to add a custom endpoint 'profile' to WordPress rewrite rules.

Wordpress
<?php
function add_custom_endpoint() {
    add_rewrite_endpoint('[1]', EP_ROOT);
}
add_action('init', 'add_custom_endpoint');
Drag options to blanks, or click blank then click option'
Asettings
Bdashboard
Cprofile
Daccount
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong endpoint name that does not match the intended URL part.
Forgetting to hook the function to 'init' action.
2fill in blank
medium

Complete the code to add the 'profile' endpoint to the query vars.

Wordpress
<?php
function add_query_vars_filter($vars) {
    $vars[] = '[1]';
    return $vars;
}
add_filter('query_vars', 'add_query_vars_filter');
Drag options to blanks, or click blank then click option'
Auser_profile
Bendpoint
Ccustom_profile
Dprofile
Attempts:
3 left
💡 Hint
Common Mistakes
Adding a different string than the endpoint name to query vars.
Not returning the modified $vars array.
3fill in blank
hard

Fix the error in the code to flush rewrite rules after adding the endpoint.

Wordpress
<?php
function flush_rewrite_rules_on_activation() {
    [1];
}
register_activation_hook(__FILE__, 'flush_rewrite_rules_on_activation');
Drag options to blanks, or click blank then click option'
Aflush_rules()
Bflush_rewrite_rules()
Crewrite_flush()
Dflush_rewrites()
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-existent function like flush_rules() or flush_rewrites().
Not flushing rewrite rules on plugin activation.
4fill in blank
hard

Fill both blanks to check if the current query is for the 'profile' endpoint and display a message.

Wordpress
<?php
function check_profile_endpoint() {
    if (get_query_var('[1]') === '[2]') {
        echo 'This is the profile endpoint page.';
    }
}
add_action('template_redirect', 'check_profile_endpoint');
Drag options to blanks, or click blank then click option'
Aprofile
Buser_profile
Dcustom
Attempts:
3 left
💡 Hint
Common Mistakes
Using different strings for the query var and the comparison value.
Checking the wrong query var name.
5fill in blank
hard

Fill all three blanks to register a custom endpoint 'dashboard', add it to query vars, and flush rewrite rules on activation.

Wordpress
<?php
function add_dashboard_endpoint() {
    add_rewrite_endpoint('[1]', EP_ROOT);
}
add_action('init', 'add_dashboard_endpoint');

function add_dashboard_query_vars($vars) {
    $vars[] = '[2]';
    return $vars;
}
add_filter('query_vars', 'add_dashboard_query_vars');

function flush_rewrite_on_activation() {
    [3];
}
register_activation_hook(__FILE__, 'flush_rewrite_on_activation');
Drag options to blanks, or click blank then click option'
Adashboard
Cflush_rewrite_rules()
Dflush_rules()
Attempts:
3 left
💡 Hint
Common Mistakes
Using different strings for endpoint and query var.
Using incorrect function to flush rewrite rules.

Practice

(1/5)
1. What is the main purpose of using add_rewrite_endpoint in WordPress?
easy
A. To enqueue styles and scripts
B. To register a new plugin in WordPress
C. To add a new URL part (endpoint) for custom content or actions
D. To create a new database table

Solution

  1. Step 1: Understand the function purpose

    add_rewrite_endpoint is used to add new URL parts to WordPress URLs.
  2. Step 2: Identify correct usage context

    This function helps create custom endpoints for special content or actions, not for plugins, tables, or scripts.
  3. Final Answer:

    To add a new URL part (endpoint) for custom content or actions -> Option C
  4. Quick Check:

    add_rewrite_endpoint adds URL parts = D [OK]
Hint: Endpoints add URL parts for custom content [OK]
Common Mistakes:
  • Confusing endpoints with plugin registration
  • Thinking it creates database tables
  • Assuming it loads scripts or styles
2. Which hook is the correct place to call add_rewrite_endpoint when registering a custom endpoint?
easy
A. wp_footer
B. wp_enqueue_scripts
C. admin_menu
D. init

Solution

  1. Step 1: Recall WordPress hook usage

    The init hook runs early and is the recommended place to add rewrite rules and endpoints.
  2. Step 2: Eliminate incorrect hooks

    wp_enqueue_scripts is for scripts/styles, admin_menu is for admin menus, and wp_footer runs late in page rendering.
  3. Final Answer:

    init -> Option D
  4. Quick Check:

    add_rewrite_endpoint called on init hook = A [OK]
Hint: Use init hook for rewrite endpoints [OK]
Common Mistakes:
  • Using wp_enqueue_scripts instead of init
  • Adding endpoints in admin_menu hook
  • Placing code in wp_footer hook
3. Given this code snippet, what will be the effect on the URL structure?
add_action('init', function() {
  add_rewrite_endpoint('special', EP_PERMALINK | EP_PAGES);
});
medium
A. Adds '/special/' as an endpoint to permalinks and pages URLs
B. Removes all existing endpoints from URLs
C. Creates a new admin menu called 'special'
D. Flushes rewrite rules automatically

Solution

  1. Step 1: Analyze add_rewrite_endpoint parameters

    The first parameter 'special' is the endpoint name; the second parameter sets where it applies: permalinks and pages.
  2. Step 2: Understand the effect on URLs

    This adds '/special/' to URLs of posts and pages, allowing custom handling of that URL part.
  3. Final Answer:

    Adds '/special/' as an endpoint to permalinks and pages URLs -> Option A
  4. Quick Check:

    Endpoint 'special' added to permalinks/pages = B [OK]
Hint: Endpoint name + location = new URL part [OK]
Common Mistakes:
  • Thinking it removes endpoints
  • Confusing endpoints with admin menus
  • Assuming rewrite rules flush automatically
4. What is missing or incorrect in this code that registers a custom endpoint?
add_action('init', function() {
  add_rewrite_endpoint('promo', EP_ROOT);
});
medium
A. The endpoint name 'promo' is invalid
B. Rewrite rules are not flushed after adding the endpoint
C. The hook 'init' is incorrect for this function
D. The constant EP_ROOT cannot be used with add_rewrite_endpoint

Solution

  1. Step 1: Check endpoint registration correctness

    The endpoint name 'promo' is valid, and EP_ROOT is a valid location constant.
  2. Step 2: Identify missing step

    After adding endpoints, rewrite rules must be flushed (usually once) to apply changes; this code does not flush rules.
  3. Final Answer:

    Rewrite rules are not flushed after adding the endpoint -> Option B
  4. Quick Check:

    Flush rewrite rules after adding endpoints = C [OK]
Hint: Flush rewrite rules after adding endpoints [OK]
Common Mistakes:
  • Skipping rewrite rules flush
  • Using wrong hook instead of init
  • Thinking endpoint names must be special
5. You want to add a custom endpoint 'download' that works on posts and pages, and you want to flush rewrite rules only once after activation. Which code snippet correctly achieves this?
hard
A.
function add_download_endpoint() {
  add_rewrite_endpoint('download', EP_PERMALINK | EP_PAGES);
}
add_action('init', 'add_download_endpoint');

register_activation_hook(__FILE__, function() {
  add_download_endpoint();
  flush_rewrite_rules();
});
B.
add_action('init', function() {
  add_rewrite_endpoint('download', EP_ALL);
  flush_rewrite_rules();
});
C.
function add_download_endpoint() {
  add_rewrite_endpoint('download', EP_ROOT);
  flush_rewrite_rules();
}
add_action('init', 'add_download_endpoint');
D.
register_activation_hook(__FILE__, function() {
  add_rewrite_endpoint('download', EP_PERMALINK | EP_PAGES);
});

Solution

  1. Step 1: Register endpoint on init hook

    Function add_download_endpoint adds the endpoint on 'init' hook, which is correct.
  2. Step 2: Flush rewrite rules only once on activation

    Using register_activation_hook to call the endpoint function and then flush rewrite rules ensures flushing happens once on plugin activation.
  3. Step 3: Evaluate other options

    add_action('init', function() {
      add_rewrite_endpoint('download', EP_ALL);
      flush_rewrite_rules();
    });
    flushes rules on every page load (bad).
    function add_download_endpoint() {
      add_rewrite_endpoint('download', EP_ROOT);
      flush_rewrite_rules();
    }
    add_action('init', 'add_download_endpoint');
    flushes inside init (bad).
    register_activation_hook(__FILE__, function() {
      add_rewrite_endpoint('download', EP_PERMALINK | EP_PAGES);
    });
    does not flush rules at all.
  4. Final Answer:

    Register endpoint on 'init' hook and flush rewrite rules once on plugin activation -> Option A
  5. Quick Check:

    Register on init + flush once on activation = A [OK]
Hint: Flush rewrite rules once on activation, not every load [OK]
Common Mistakes:
  • Flushing rewrite rules on every page load
  • Not flushing rewrite rules at all
  • Registering endpoint outside init hook
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