Languages: English • 日本語 • 中文(简体) • 한국어 • (Add your language)
Hooks a function on to a specific action.
More specifically, this function will run the function $function_to_add when the event $hook occurs.
This function is an alias to add_filter().
See Plugin API/Action Reference for a list of action hooks. Actions are (usually) triggered when the WordPress core calls do_action().
<?php add_action( $hook, $function_to_add, $priority, $accepted_args ); ?>
To email some friends whenever an entry is posted on your blog:
function 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', 'email_friends' );
A hooked function can optionally accept arguments from the action call, if any are set to be passed. In this simplistic example, the echo_comment_id function takes the $comment_id argument, which is automatically passed to when the do_action() call using the comment_id_not_found filter hook is run.
function echo_comment_id( $comment_id ) {
echo 'Comment ID ' . $comment_id . ' could not be found';
}
add_action( 'comment_id_not_found', 'echo_comment_id', 10, 1 );
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 MyPluginClass {
public function __construct() {
add_action( 'save_post', array( $this, 'myplugin_save_posts' ) );
}
public function myplugin_save_posts() {
// do stuff here...
}
}
$mypluginclass = new MyPluginClass();
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 MyPluginClass {
public static function init() {
add_action( 'save_post', array( get_called_class(), 'myplugin_save_posts' ) );
}
public static function myplugin_save_posts() {
// do stuff here...
}
}
MyPluginClass::init();
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:
<?php do_action( 'save_post', $post_ID, $post, $update ); ?>
Your add_action call would look like:
<?php add_action( 'save_post', 'my_save_post', 10, 3 ); ?>
And your function would be:
function my_save_post( $post_ID, $post, $update ) {
// do stuff here
}
Since 1.2.0
add_action() is located in wp-includes/plugin.php.
Actions: has_action(), add_action(), do_action(), do_action_ref_array(), did_action(), remove_action(), remove_all_actions()