Turn Off Automatic Trash Deletion?

I have a client who wants to use the trash feature, but keep items in there indefinitely (I have no idea why, but they insist on it).

From reading this codex article on the trash status, I see that you can set the EMPTY_TRASH_DAYS constant to zero. But it says that this will disable trash functionality altogether. I don’t want to do this. I just want to disable the auto-trash emptying.

Is there any way to do this? Or am I stuck with just entering some huge number for the EMPTY_TRASH_DAYS value?

Solutions Collecting From Web of "Turn Off Automatic Trash Deletion?"

My guess is – yes, you are stuck with exactly that.

Checks for EMPTY_TRASH_DAYS seem to be hardcoded as condition for switching interface between trash and delete in several places.

You can do the following:

  • Set EMPTY_TRASH_DAYS to a very high number. E.g.: define( 'EMPTY_TRASH_DAYS', 1000000 );

  • Or remove the wp_schedule_delete action:

    function my_remove_schedule_delete() {
        remove_action( 'wp_scheduled_delete', 'wp_scheduled_delete' );
    add_action( 'init', 'my_remove_schedule_delete' );