Title: after_plugin_row
Published: April 25, 2014
Last modified: February 24, 2026

---

# do_action( ‘after_plugin_row’, string $plugin_file, array $plugin_data, string $status )

## In this article

 * [Parameters](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#changelog)
 * [User Contributed Notes](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#user-contributed-notes)

[ Back to top](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#wp--skip-link--target)

Fires after each row in the Plugins list table.

## 󠀁[Parameters](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#parameters)󠁿

 `$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()](https://developer.wordpress.org/reference/functions/get_plugin_data/)
and the ['plugin_row_meta'](https://developer.wordpress.org/reference/hooks/plugin_row_meta/)
filter for the list of possible values.

`$status`string

Status filter currently applied to the plugin list.
 Possible values are: `'all'`,`'
active'`, `'inactive'`, `'recently_activated'`, `'upgrade'`, `'mustuse'`, `'dropins'`,`'
search'`, `'paused'`, `'auto-update-enabled'`, `'auto-update-disabled'`.

## 󠀁[Source](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#source)󠁿

    ```php
    do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status );
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/class-wp-plugins-list-table.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-admin/includes/class-wp-plugins-list-table.php#L1491)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-admin/includes/class-wp-plugins-list-table.php#L1491-L1491)

## 󠀁[Related](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#related)󠁿

| Used by | Description | 
| [WP_Plugins_List_Table::single_row()](https://developer.wordpress.org/reference/classes/wp_plugins_list_table/single_row/)`wp-admin/includes/class-wp-plugins-list-table.php` |  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#changelog)󠁿

| Version | Description | 
| [5.5.0](https://developer.wordpress.org/reference/since/5.5.0/) | Added `'auto-update-enabled'` and `'auto-update-disabled'` to possible values for `$status`. | 
| [2.3.0](https://developer.wordpress.org/reference/since/2.3.0/) | Introduced. |

## 󠀁[User Contributed Notes](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#user-contributed-notes)󠁿

 1.  [Skip to note 2 content](https://developer.wordpress.org/reference/hooks/after_plugin_row/?output_format=md#comment-content-4513)
 2.   [Geoffrey](https://profiles.wordpress.org/creativejuiz/)  [  5 years ago  ](https://developer.wordpress.org/reference/hooks/after_plugin_row/#comment-4513)
 3. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fhooks%2Fafter_plugin_row%2F%23comment-4513)
    Vote results for this note: 0[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fhooks%2Fafter_plugin_row%2F%23comment-4513)
 4. It seems like the `$plugin_data` array is composed like the following:
 5.     ```php
        array (size=27)
          'id' => string '' (length=0)
          'slug' => string '' (length=0)
          'plugin' => string '' (length=0)
          'new_version' => string '1.4.10' (length=6)
          'url' => string '' (length=0)
          'package' => string '' (length=0)
          'icons' => 
            array (size=2)
              '2x' => string '' (length=0)
              '1x' => string '' (length=0)
          'banners' => 
            array (size=1)
              '1x' => string '' (length=0)
          'banners_rtl' => 
            array (size=0)
              empty
          'tested' => string '5.5.3' (length=5)
          'requires_php' => boolean false
          'compatibility' => 
            object(stdClass)[1022]
          'update-supported' => boolean true
          'Name' => string '' (length=0)
          'PluginURI' => string '' (length=0)
          'Version' => string '1.4.9' (length=5)
          'Description' => string '' (length=0)
          'Author' => string '' (length=0)
          'AuthorURI' => string '' (length=0)
          'TextDomain' => string '' (length=0)
          'DomainPath' => string '/languages' (length=10)
          'Network' => boolean false
          'RequiresWP' => string '' (length=0)
          'RequiresPHP' => string '' (length=0)
          'Title' => string '' (length=0)
          'AuthorName' => string '' (length=0)
          'update' => boolean true
        ```
    
 6. Just FYI. Could be more complete in this documentation page.
 7. You also have the `after_plugin_row_{file}` hook that gives you something like `
    after_plugin_row_akismet/akismet.php` for instance, it takes the exact same parameters
    though.
 8.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fhooks%2Fafter_plugin_row%2F%3Freplytocom%3D4513%23feedback-editor-4513)

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fhooks%2Fafter_plugin_row%2F)
before being able to contribute a note or feedback.