Using WordPress ‘media_row_actions’ PHP filter

The media_row_actions WordPress PHP filter allows you to modify the action links for each attachment in the Media list table.

Usage

add_filter('media_row_actions', 'your_custom_function', 10, 3);
function your_custom_function($actions, $post, $detached) {
    // your custom code here
    return $actions;
}

Parameters

  • $actions (string[]): An array of action links for each attachment. Default ‘Edit’, ‘Delete Permanently’, ‘View’.
  • $post (WP_Post): WP_Post object for the current attachment.
  • $detached (bool): Whether the list table contains media not attached to any posts. Default true.

More information

See WordPress Developer Resources: media_row_actions

Examples

This example adds a “Download” link to each attachment in the Media list table.

add_filter('media_row_actions', 'add_download_link', 10, 3);
function add_download_link($actions, $post, $detached) {
    $actions['download'] = '<a href="' . wp_get_attachment_url($post->ID) . '">Download</a>';
    return $actions;
}

This example removes the “View” link for each attachment in the Media list table.

add_filter('media_row_actions', 'remove_view_link', 10, 3);
function remove_view_link($actions, $post, $detached) {
    unset($actions['view']);
    return $actions;
}

This example renames the “Edit” link to “Modify” for each attachment in the Media list table.

add_filter('media_row_actions', 'rename_edit_link', 10, 3);
function rename_edit_link($actions, $post, $detached) {
    $actions['edit'] = str_replace('Edit', 'Modify', $actions['edit']);
    return $actions;
}

This example adds a custom link to each image attachment in the Media list table.

add_filter('media_row_actions', 'add_custom_link_for_images', 10, 3);
function add_custom_link_for_images($actions, $post, $detached) {
    if (wp_attachment_is_image($post->ID)) {
        $actions['custom'] = '<a href="#">Custom Action</a>';
    }
    return $actions;
}

This example adds a “Custom Action” link to each attachment in the Media list table that is not attached to any posts.

add_filter('media_row_actions', 'add_custom_link_for_detached', 10, 3);
function add_custom_link_for_detached($actions, $post, $detached) {
    if ($detached) {
        $actions['custom'] = '<a href="#">Custom Action</a>';
    }
    return $actions;
}