add_action() wordpress function and usage

Home / WordPress / WordPress Wiki / add_action() wordpress function and usage

add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 )

This function is used to add a callback function to an action hook.

Description

Actions are the hooks that the WordPress core launches at specific points during execution, or when specific events occur. Plugins can specify that one or more of its PHP functions are executed at these points, using the Action API.

Parameters

$hook_name

(string) (Required) The name of the action to add the callback to.

$callback

(callable) (Required) The callback to be run when the action is called.

$priority

(int) (Optional) Used to specify the order in which the functions associated with a particular action are executed. Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.

Default value: 10

$accepted_args

(int) (Optional) The number of arguments the function accepts.

Default value: 1

Return

(true) Always returns true.

More Information

Usage

add_action( $hook, $function_to_add, $priority, $accepted_args );

To find out the number and name of arguments for an action, simply search the code base for the matching do_action() call. For example, if you are hooking into ‘save_post’, you would find it in post.php:

do_action( 'save_post', $post_ID, $post, $update );

Your add_action call would look like:

add_action( 'save_post', 'wpdocs_my_save_post', 10, 3 );

And your function would be:

function wpdocs_my_save_post( $post_ID, $post, $update ) {
   // do stuff here
}

Further sample usage

Using with a Class
To use add_action() when your plugin or theme is built using classes, you need to use the array callable syntax. You would pass the function to add_action() as an array, with $this as the first element, then the name of the class method, like so:

/**
 * Class WP_Docs_Class.
 */
class WP_Docs_Class {
 
    /**
     * Constructor
     */
    public function __construct() {
        add_action( 'save_post', array( $this, 'wpdocs_save_posts' ) );
    }
 
    /**
     * Handle saving post data.
     */
    public function wpdocs_save_posts() {
        // do stuff here...
    }
}
 
$wpdocsclass = new WP_Docs_Class();

Using with static functions in a class
If the class is called staticly the approach has to be like below as $this is not available. This also works if class is extended. Use the following:

/**
 * Class WP_Docs_Static_Class.
 */
class WP_Docs_Static_Class {
 
    /**
     * Initializer for setting up action handler
     */
    public static function init() {
        add_action( 'save_post', array( get_called_class(), 'wpdocs_save_posts' ) );
    }
 
    /**
     * Handler for saving post data.
     */
    public static function wpdocs_save_posts() {
        // do stuff here...
    }
}
 
WP_Docs_Static_Class::init();

Simple Hook
To email some friends whenever an entry is posted on your blog:

/**
 * Send email to my friends.
 *
 * @param int $post_id Post ID.
 * @return int Post ID.
 */
function wpdocs_email_friends( $post_id ) {
    $friends = 'bob@example.org, susie@example.org';
    wp_mail( $friends, "sally's blog updated", 'I just put something on my blog: http://blog.example.com' );
 
    return $post_id;
}
add_action( 'publish_post', 'wpdocs_email_friends' );

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments