Using WordPress ‘plugin_action_links_{$plugin_file}’ PHP filter

The plugin_action_links_{$plugin_file} WordPress PHP filter allows you to modify the action links displayed for a specific plugin in the Plugins list table.

Usage

add_filter('plugin_action_links_my-plugin/my-plugin.php', 'custom_plugin_action_links', 10, 4);

function custom_plugin_action_links($actions, $plugin_file, $plugin_data, $context) {
    // your custom code here
    return $actions;
}

Parameters

  • $actions (string[]): An array of plugin action links. By default, this can include ‘activate’, ‘deactivate’, and ‘delete’. With Multisite active, this can also include ‘network_active’ and ‘network_only’ items.
  • $plugin_file (string): Path to the plugin file relative to the plugins directory.
  • $plugin_data (array): An array of plugin data. See get_plugin_data() and the ‘plugin_row_meta’ filter for the list of possible values.
  • $context (string): The plugin context. By default, this can include ‘all’, ‘active’, ‘inactive’, ‘recently_activated’, ‘upgrade’, ‘mustuse’, ‘dropins’, and ‘search’.

More information

See WordPress Developer Resources: plugin_action_links_{$plugin_file}

Examples

Add a ‘Settings’ link to your plugin’s action links.

add_filter('plugin_action_links_my-plugin/my-plugin.php', 'add_custom_settings_link', 10, 2);

function add_custom_settings_link($actions, $plugin_file) {
    $settings_link = '<a href="options-general.php?page=my-plugin-settings">Settings</a>';
    array_unshift($actions, $settings_link);
    return $actions;
}

Add a ‘Documentation’ link to your plugin’s action links.

add_filter('plugin_action_links_my-plugin/my-plugin.php', 'add_custom_documentation_link', 10, 2);

function add_custom_documentation_link($actions, $plugin_file) {
    $documentation_link = '<a href="https://my-plugin-docs.com" target="_blank">Documentation</a>';
    array_push($actions, $documentation_link);
    return $actions;
}

Remove the ‘Deactivate’ link from your plugin’s action links.

add_filter('plugin_action_links_my-plugin/my-plugin.php', 'remove_deactivate_link', 10, 1);

function remove_deactivate_link($actions) {
    unset($actions['deactivate']);
    return $actions;
}

Hide the ‘Delete’ link from your plugin’s action links if the user is not an administrator.

add_filter('plugin_action_links_my-plugin/my-plugin.php', 'conditionally_hide_delete_link', 10, 1);

function conditionally_hide_delete_link($actions) {
    if (!current_user_can('administrator')) {
        unset($actions['delete']);
    }
    return $actions;
}

Reorder your plugin’s action links by moving the ‘Settings’ link to the end.

add_filter('plugin_action_links_my-plugin/my-plugin.php', 'reorder_action_links', 10, 1);

function reorder_action_links($actions) {
    if (isset($actions['settings'])) {
        $settings_link = $actions['settings'];
        unset($actions['settings']);
        $actions['settings'] = $settings_link;
    }
    return $actions;
}