Bird
Raised Fist0
Wordpressframework~10 mins

Request and response handling 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 get a query parameter named 'id' from the URL in WordPress.

Wordpress
$id = get_query_var('[1]');
Drag options to blanks, or click blank then click option'
Apage
Bpost_id
Cid
Duser
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong parameter name like 'post_id' instead of 'id'.
Forgetting to put the parameter name as a string.
2fill in blank
medium

Complete the code to send a JSON response with status 200 in WordPress.

Wordpress
wp_send_json_success([1]);
Drag options to blanks, or click blank then click option'
A'Success'
Barray('message' => 'Success')
Ctrue
Dnull
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a string instead of an array.
Passing null which sends empty data.
3fill in blank
hard

Fix the error in the code to check if a POST request contains a 'name' parameter.

Wordpress
if (isset($_POST['[1]'])) {
    $name = sanitize_text_field($_POST['name']);
}
Drag options to blanks, or click blank then click option'
Aname
Busername
Cuser
Dfullname
Attempts:
3 left
💡 Hint
Common Mistakes
Checking for a different key than the one used to read the value.
Not sanitizing the input after checking.
4fill in blank
hard

Fill both blanks to create a REST API endpoint callback that returns a JSON response with a message.

Wordpress
function my_api_callback() {
    return wp_send_json_[1](array('message' => '[2]'));
}
Drag options to blanks, or click blank then click option'
Asuccess
Berror
CHello World
DFailed
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'error' instead of 'success' for a positive response.
Putting an error message instead of a greeting.
5fill in blank
hard

Fill all three blanks to register a REST API route that accepts GET requests and uses a callback.

Wordpress
add_action('rest_api_init', function () {
    register_rest_route('myplugin/v1', '/data', array(
        'methods' => [1],
        'callback' => [2],
        'permission_callback' => [3]
    ));
});
Drag options to blanks, or click blank then click option'
A'POST'
B'GET'
C'__return_true'
Dmy_api_callback
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'POST' instead of 'GET' for the method.
Not using a valid permission callback function.

Practice

(1/5)
1. In WordPress, which superglobal variable is commonly used to access data sent via an HTTP POST request?
easy
A. $_REQUEST
B. $_POST
C. $_GET
D. $GLOBALS

Solution

  1. Step 1: Understand HTTP POST data handling

    Data sent by users through a POST request is stored in the $_POST superglobal in PHP.
  2. Step 2: Differentiate from other superglobals

    $_GET holds URL query parameters, $_REQUEST combines GET, POST, and COOKIE but is less specific, and $GLOBALS holds all global variables.
  3. Final Answer:

    $_POST -> Option B
  4. Quick Check:

    POST data = $_POST [OK]
Hint: POST data is always in $_POST superglobal [OK]
Common Mistakes:
  • Confusing $_GET with $_POST
  • Using $_REQUEST without knowing its mixed content
  • Assuming $GLOBALS holds request data
2. Which of the following is the correct way to send a JSON response in a WordPress REST API callback function?
easy
A. wp_send_json($data);
B. header('Content-Type: text/plain'); echo $data;
C. echo json_encode($data);
D. return new WP_REST_Response($data, 200);

Solution

  1. Step 1: Understand WordPress REST API callback requirements

    REST API callbacks should return a WP_REST_Response, array, or WP_Error. The framework handles headers, JSON encoding, and status.
  2. Step 2: Compare other options

    wp_send_json($data); sends JSON and exits with wp_die(), suitable for AJAX but bypasses REST processing/filters. echo json_encode($data); outputs JSON without headers or exit. header('Content-Type: text/plain'); echo $data; wrong type.
  3. Final Answer:

    return new WP_REST_Response($data, 200); -> Option D
  4. Quick Check:

    Return WP_REST_Response [OK]
Hint: Return WP_REST_Response for REST API JSON response [OK]
Common Mistakes:
  • Using wp_send_json() (intended for AJAX handlers)
  • Using echo without proper headers and exit
  • Sending wrong content type header
3. Consider this WordPress REST API callback function:
function get_custom_data(\WP_REST_Request $request) {
  $param = $request->get_param('id');
  if ($param === '42') {
    return ['message' => 'Found'];
  }
  return new WP_Error('not_found', 'ID not found', ['status' => 404]);
}
What will be the HTTP status code if the request URL includes ?id=42?
medium
A. 200
B. 404
C. 500
D. 302

Solution

  1. Step 1: Analyze the parameter check

    The function checks if id equals '42'. If yes, it returns an array with message 'Found'.
  2. Step 2: Understand default REST API response codes

    Returning an array results in a 200 OK status. Returning WP_Error sets the error status (404 here).
  3. Final Answer:

    200 -> Option A
  4. Quick Check:

    Valid data returns 200 OK [OK]
Hint: Array return = 200 OK; WP_Error return = error code [OK]
Common Mistakes:
  • Assuming WP_Error always returns 200
  • Confusing string '42' with integer 42
  • Ignoring default REST API status codes
4. You wrote this WordPress REST API endpoint callback:
function my_callback(\WP_REST_Request $request) {
  $data = $request->get_param('data');
  wp_send_json_success($data);
  echo 'Done';
}
What is the problem with this code?
medium
A. The echo statement after wp_send_json_success() will never run
B. wp_send_json_success() does not send JSON
C. get_param() cannot retrieve 'data' parameter
D. Missing return statement causes error

Solution

  1. Step 1: Understand wp_send_json_success behavior

    This function sends JSON response and calls exit(), stopping further code execution.
  2. Step 2: Analyze code after wp_send_json_success

    The echo 'Done'; line is unreachable because the script exits before it.
  3. Final Answer:

    The echo statement after wp_send_json_success() will never run -> Option A
  4. Quick Check:

    wp_send_json_success() exits script [OK]
Hint: Code after wp_send_json_success() is unreachable [OK]
Common Mistakes:
  • Expecting code after wp_send_json_success() to run
  • Confusing get_param() usage
  • Thinking wp_send_json_success() returns data instead of exiting
5. You want to create a WordPress REST API endpoint that accepts a POST request with a JSON body containing a 'name' field. Which sequence correctly handles the request and sends a JSON response with a greeting message?
hard
A. Use $request->get_body_params()['name'] to get 'name', then return ['greeting' => 'Hello ' . $name].
B. Use $_POST['name'] directly, then echo JSON encoded greeting and exit.
C. Use $request->get_json_params()['name'] to get 'name', then return new WP_REST_Response(['greeting' => 'Hello ' . $name], 200).
D. Use file_get_contents('php://input') to read JSON body, then use wp_send_json() to send response.

Solution

  1. Step 1: Retrieve JSON body parameters properly

    In WordPress REST API, $request->get_json_params() safely parses JSON body data.
  2. Step 2: Return a proper REST response object

    Returning WP_REST_Response with data and status code is the recommended way to send structured responses.
  3. Step 3: Evaluate other options

    A uses get_body_params() which checks form data ($_POST), empty for JSON body POSTs. C uses $_POST['name'] directly, same issue. D manually reads input bypassing framework helpers and uses wp_send_json() which exits.
  4. Final Answer:

    Use $request->get_json_params()['name'] and return WP_REST_Response -> Option C
  5. Quick Check:

    Use get_json_params() + WP_REST_Response for JSON POST [OK]
Hint: Use get_json_params() for JSON body in REST API [OK]
Common Mistakes:
  • Using $_POST or get_body_params for JSON body data
  • Not decoding JSON body properly
  • Returning raw arrays instead of WP_REST_Response
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