Bird
Raised Fist0
Wordpressframework~10 mins

Request and response handling in Wordpress - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Request and response handling
User sends HTTP request
↓
WordPress receives request
↓
Parse URL and determine action
↓
Load plugins and themes
↓
Run hooks and filters
↓
Generate response content
↓
Send HTTP response back to user
This flow shows how WordPress handles a web request from the user, processes it, and sends back a response.
Execution Sample
Wordpress
<?php
add_action('init', function() {
  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    echo 'Form submitted';
  } else {
    echo 'Show form';
  }
});
This code checks if the request is a POST and outputs a message accordingly.
Execution Table
StepRequest MethodConditionActionOutput
1GETIs POST?NoShow form
2POSTIs POST?YesForm submitted
3PUTIs POST?NoShow form
4ExitNo more requestsStopEnd of handling
💡 No more requests to process, so WordPress stops handling.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
$_SERVER['REQUEST_METHOD']GETGETPOSTPUTPUT
Condition (Is POST?)N/AFalseTrueFalseFalse
OutputN/AShow formForm submittedShow formShow form
Key Moments - 2 Insights
Why does the output change when the request method changes?
Because the code checks if the request method is POST (see execution_table rows 1-3). If true, it outputs 'Form submitted'; otherwise, it outputs 'Show form'.
What happens if the request method is neither GET nor POST?
The condition 'Is POST?' is false, so the output defaults to 'Show form' as shown in execution_table row 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output at step 2 when the request method is POST?
ANo output
BShow form
CForm submitted
DError
💡 Hint
Check the 'Output' column in execution_table row 2.
At which step does the condition 'Is POST?' evaluate to false?
AStep 2
BStep 1
CStep 4
DNone
💡 Hint
Look at the 'Condition' column in execution_table rows 1 and 3.
If the request method changed to PUT, what would the output be according to the variable tracker?
AShow form
BForm submitted
CNo output
DError
💡 Hint
See the 'Output' value after step 3 in variable_tracker.
Concept Snapshot
WordPress handles requests by checking the HTTP method.
Use hooks like 'init' to run code on each request.
Check $_SERVER['REQUEST_METHOD'] to detect POST or GET.
Output content based on request type.
Response is sent back after processing.
Full Transcript
In WordPress, when a user sends a request, WordPress receives it and parses the URL to decide what to do. It loads plugins and themes, runs hooks and filters, then generates the response content. For example, using the 'init' hook, you can check if the request method is POST or GET by looking at $_SERVER['REQUEST_METHOD']. If it's POST, you might show a message like 'Form submitted'; if not, you show 'Show form'. This decision happens every time WordPress handles a request. The output depends on the request method. If the method is something else like PUT, the code treats it like GET and shows the form. This flow ensures WordPress responds correctly to different request types.

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