admin_post_{$action} WordPress Action Hook

The admin_post_{$action} hook is called whenever a user attempts to perform an action on a post in the WordPress admin. It is useful for performing custom validation or for taking action before the default handler is invoked.

do_action( "admin_post_{$action}" ) #

Fires on an authenticated admin post request for the given action.


Description

The dynamic portion of the hook name, $action, refers to the given request action.


Top ↑

More Information

This hook allows you to create custom handlers for your own custom GET and POST requests. The admin_post_ hook follows the format “admin_post_$action“, where $action is your GET or POST request’s ‘action‘ parameter.

Usage:

If you needed to create a request or form handler for an “add_foobar” action request, you would create a hook like this:

add_action( 'admin_post_add_foobar', 'prefix_admin_add_foobar' );

function prefix_admin_add_foobar() {
    // Handle request then generate response using echo or leaving PHP and using HTML
}

Using the above example, any time a GET or POST request is sent to WordPress, and the request’s ‘action‘ parameter is set to ‘add_foobar‘, this hook will be automatically executed. For example, the following HTML content would execute the above hook when the user clicks either Submit.


<a href="http://www.example.com/wp-admin/admin-post.php?action=add_foobar&data=foobarid">Submit</a>


<form action="http://www.example.com/wp-admin/admin-post.php" method="post">
<input type="hidden" name="action" value="add_foobar">
<input type="hidden" name="data" value="foobarid">
<input type="submit" value="Submit">
</form>

Note: The data value (foobarid) would be available in your hook function from the $_GET, $_POST or $_REQUEST array as is applicable.

Example:

This following example allows you to hook the GET or POST requests from the above html.

add_action( 'admin_post_add_foobar', 'prefix_admin_add_foobar' );

//this next action version allows users not logged in to submit requests
//if you want to have both logged in and not logged in users submitting, you have to add both actions!
add_action( 'admin_post_nopriv_add_foobar', 'prefix_admin_add_foobar' );

function prefix_admin_add_foobar() {
    status_header(200);
    //request handlers should exit() when they complete their task
    exit("Server received '{$_REQUEST['data']}' from your browser.");
}

Top ↑

Source

File: wp-admin/admin-post.php

View on Trac


Top ↑

Changelog

Changelog
VersionDescription
2.6.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.