How to Add a WordPress Plugin Action Link

I always prefer it when plugins make it as easy as possible to find their configuration page. When I install a new plugin the last thing I want to do is hunt around for some hidden menu item, I want to play around with my new toy! And what better place to link to a plugin’s configuration than right from the admin Plugins page where the plugin is activated, deactivated or (the horror!) deleted. These are called ‘Action Links’ and it’s so easy to add a ‘Configure’ or ‘Manage’, or indeed any other link to your own plugin, that there’s no reason not to.

To add your very own action link, hook into the plugin_action_links_ filter like so, from your plugins constructor for instance:

if ( is_admin() ) {
  add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( &$this, 'plugin_manage_link' ), 10, 4 );
}

Then write a plugin_manage_link() function to add your own custom action links. Here’s an example to get you started:

/**
 * Return the plugin action links.  This will only be called if the plugin
 * is active.
 *
 * @param array $actions associative array of action names to anchor tags
 * @param string $plugin_file plugin file name, ie my-plugin/my-plugin.php
 * @param array $plugin_data associative array of plugin data from the plugin file headers
 * @param string $context plugin status context, ie 'all', 'active', 'inactive', 'recently_active'
 *
 * @return array associative array of plugin action links
 */
function plugin_manage_link( $actions, $plugin_file, $plugin_data, $context ) {

    // add a 'Configure' link to the front of the actions list for this plugin

    return array_merge( array( 'configure' => '' . __( 'Configure' ) . '' ), $actions );

}

Substitue the path to your plugin configuration for admin.php?page=myplugin, of course. Remember that this filter is only called when your plugin is active, so there’s no need to check for that. Easy, right?