
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?