How to change 'Move to Trash' to 'Move to Draft' for my blog's users?

I want that only Admin and Editor roles can use the 'Move to Trash' option in my blog, and other users will get the 'Move to Draft' option instead.

Like inside of the 'Quick Edit' / 'Bulk Actions' options in All posts of the Dashboard, and the Post editor side bar:

Topic trash Wordpress

Category Web


You can use add_filter() for post_row_actions to filter out the ones you don't want, add in the functions you do want. Like so:

<?php
/** Plugin Name: (wpse) Draft vs. Trash Posts */
add_filter( 'post_row_actions', 'my_plugin_update_actions', 10, 2 );
function my_plugin_update_actions($actions, $post) {

    $capability = 'promote_users';
    $role = 'Administrator';
    // Choose what you want to check against. Better only use one: Capability *or* role.
    if (
        current_user_can( $capability )
        OR current_user_has_role( $role )
    ) {
        unset($actions['trash']);
        $actions['draft'] = '<a class="submitdelete" title="Move this item to drafts" href="'.admin_url('post.php?post='.$post->ID.'&action=draft').'">Move To Draft</a>';
    }

    return $actions;
}

That should get you started in the right direction.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.