Настройка корзины (trash) в WordPress
По умолчанию удаленные записи, страницы и комментарии в WordPress при удалении попадают в корзину, где на протяжении 30 дней остается возможность для их восстановления. Также можно очищать корзину вручную.
WordPress обладает возможностью отключить эту функцию или изменить срок нахождения данных в корзине.
Вот как выглядит стандартный экран, без внесения изменений в данную функцию:
Для изменения срока хранения в корзине, нужно добавить следующую строку в файл wp-config.php:
define( 'EMPTY_TRASH_DAYS', 7 );
Тут 7 - число дней (по умолчанию 30), после которых данные, которые старше этого срока будут удалены навсегда. Если нужно полностью отключить эту возможность, то добавляем следующее:
define( 'EMPTY_TRASH_DAYS', 0 );
При этом при удалении записи, страницы и комментарии будут удалятся безвозвратно, причем не будет выводится никакого подтверждения для удаления, поэтому нужно быть аккуратным, чтобы не удалить лишнее. Вот как будет выглядеть экран после отключения корзины:
Вместо удалить появляется ссылка удалить навсегда.
Как отключить корзину для типа записи (поста)
Иногда полезно иметь корзину для постов и страниц, но вот для новых созданных типов записей такой функционал совсем не нужен.
Проблема: WordPress не позволяет отключить корзину для типа записи - константа EMPTY_TRASH_DAYS отключает корзину только полностью. Обойти этот момент можно через хук wp_trash_post.
Допустим, нам нужно отключить корзину для типа записи team
и page
:
add_filter( 'pre_trash_post', 'disable_trash_for_post_type', 10, 2 ); function disable_trash_for_post_type( $null, $post ){ if( in_array( $post->post_type, ['team','page'] ) ){ return wp_delete_post( $post->ID, true ); } return $null; }
Стоит заметить, что функция wp_delete_post( $post_id, $forse_delete ) отправляет в корзину только записи типа page и post. Т.е. если удалять запись через эту функцию, то любая запись произвольного типа будет удалена навсегда, даже есть не указать параметр $force_delete ( принудительное удаление).