WordPress: Add plugin settings link to Plugins page

When building a plugin that has its own settings page, it’s often handy to create a link to the settings page straight from the Plugins list – this saves users the time it takes to find where exactly your plugin appears in the admin menu. Here is a simple code snippet that creates the settings link for you – all you need to do is tell it where to go:

function plugin_add_settings_link( $links ) {
$settings_link = '<a href="options-general.php?page=plugin_name">' . __( 'Settings' ) . '</a>';
array_push( $links, $settings_link );
return $links;
$plugin = plugin_basename( __FILE__ );
add_filter( "plugin_action_links_$plugin", 'plugin_add_settings_link' );

view raw


hosted with ❤ by GitHub

Simply replace the href attribute with the link to the plugin settings page and rename the function to something slightly more unique (preferably all wrapped in an if(!function_exists()) conditional).

17 Thoughts

  1. Thanks for the nice post.
    however i recommend this little change to make Settings as the first link

    array_unshift($links, $settings_link);

  2. Hi: I really appreciate this post. It will allow me to (optionally) remove one page from the Admin menu, however, when I click the link, I get the “You do not have sufficient permissions to access this page” message. Any idea what would cause this?

  3. Hugh, I’ve been trying to figure this out forever now and kept putting it on the back burner because I was getting frustrated trying to Frankenstein code in from other plugins. You’re my hero.

  4. I see you are hard coding the “options-general.php?page=plugin_name” part.

    I’ve found that menu_page_url( ‘ plugin_name’, false ) works too. Any particular reason you’re not using this function?

    I see that your post is rather old, from July 2012, but the function menu_page_url() has been around since WordPress version 3.0.0 which was released in June 2010.

    (Not trying to be a smart-ass. I’m genuinely trying to learn best coding practices for WordPress.)

Leave a Reply