Add and Remove Row Actions in an Existing WP_List_Table

I would like to modify the row actions of an existing WP_List_Table. For example, in the Users section in the back end, I would like to remove the “Edit” option from each user.

I would like to also add new actions, such as “Books”, which would list the books read by this user (this works with another plugin).

I have a feeling it is some sort of filter, but could not find anything in documentation.

Please note that I am not creating a new table. This is an existing WordPress table (e.g., Users).

How do I do that?

Thanks.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

As for the user rows in the Users list table (at wp-admin/users.php), you would use the user_row_actions hook like so:

add_filter( 'user_row_actions', 'my_user_row_actions', 10, 2 );
function my_user_row_actions( $actions, $user_object ) {
    // Remove the Edit action.
    unset( $actions['edit'] );

    // Add your custom action.
    $actions['my_action'] = '<a href="<action URL>">Action</a>';

    return $actions;
}

The other WordPress list tables which extend the WP_List_Table class also fire a similar hook with the same naming convention, i.e. <text>_row_actions, and here are the other available hooks list as of writing:

Note: These hooks mostly have only two parameters — $actions (an array of action links) and an object representing a post, term, user or comment — but the media_row_actions has a third parameter named $detached (see the docs for more details).

  • page_row_actions — fires in the Pages list table (page post type); second param: $post (a WP_Post instance)
  • post_row_actions — fires in the Posts list table (post and custom post types); second param: $post (a WP_Post instance)

    Note that this hook and the one above, they are fired in the same list table class which is WP_Posts_List_Table.

  • media_row_actions — fires in the Media list table; second param: $post (a WP_Post instance)
  • comment_row_actions — fires in the Comments list table (which is also used in the Recent Comments dashboard widget); second param: $comment (a WP_Comment instance)
  • ms_user_row_actions — fires in the Network (or Multisite) Admin Users list table; second param: $user (a WP_User instance)
  • <taxonomy>_row_actions — fires in the Terms list table ( for Tags (post_tag), Categories (category) and custom taxonomies ); second param: $tag (a WP_Term instance)
  • tag_row_actions — same as above, i.e. for any taxonomy — but if you want to target a specific taxonomy, you might want to use the above hook instead


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x