0

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:

Admin post list

Post submit meta box

1

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.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.