Prevent Post from being deleted in WordPress

I'd like to prevent a specific post from being moved to the trash. I need it to still be editable, however I don't want the user to be able to delete the post. Is this possible?

  • Ash

    Try the following code:

    add_action('wp_trash_post', 'restrict_post_deletion', 10, 1);
    add_action('before_delete_post', 'restrict_post_deletion', 10, 1);
    function restrict_post_deletion($post_id) {
      if( ! is_super_admin() ) {
        if( $post_id == ID ) {
          exit('The page you were trying to delete is protected.');
        }
      }
    }

    Change ID with your desired page/post id.

    You can add those codes in your functions.php in the theme, if you think your theme won’t be changed. Otherwise mu-plugins is the best solution. To use mu-plugins, go to /wp-content/ and find the folder with name 'mu-plugins'. If there is no folder in that name, then create a folder, name it 'mu-plugins', create a file inside that, give any name you like and paste the code in there. You don't need to activate that plugin. Mu-plugins means must use plugins, so it will be activated automatically always. If you use mu-plugins then add a php start tag at the beginning of the code.

    Hope it helps :slight_smile: Please feel free to ask more question if you have.

    Cheers
    Ash

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.