October 23, 2023

Are you a WordPress enthusiast or website administrator looking to streamline your post management tasks? If so, you’re in the right place. In this article, we’ll explore the pre_trash_post filter in WordPress, a powerful tool that can help you enhance your website management process. With this filter, you can perform a range of operations to optimize your content workflow, ensuring a smoother and more efficient experience for you and your team.

Understanding the pre_trash_post filter

Before we dive into the practical applications of the pre_trash_post filter, let’s start by understanding what this filter is all about. In WordPress, filters are functions that allow you to modify the behavior of certain actions and functions. The pre_trash_post filter specifically enables you to perform actions before a post is moved to the trash.

function example_callback( $example ) {
    // Maybe modify $example in some way.
    return $example;
add_filter( 'example_filter', 'example_callback' );

With this filter, you can intercept and manipulate posts before they are deleted, making it a valuable tool for content management, error prevention, and automation. Let’s explore five examples of how you can use the pre_trash_post filter effectively.

Please Note: The function will always return true, regardless of the validity of the callback. It is your responsibility to handle this, as it has been designed for optimization, ensuring maximum efficiency.

Automatically archive posts

Are you running a news website and want to keep a record of all the posts you trash? You can use the pre_trash_post filter to automatically archive posts in a separate category or custom post type before they are deleted. This ensures that you have a backup of your content for future reference.

Send email notifications

If you have multiple contributors on your website, it’s crucial to maintain communication. You can set up the pre_trash_post filter to send email notifications to authors or editors whenever a post is about to be trashed. This way, your team is always in the loop about content changes.

function send_trash_notification( $trash, $post, $previous_status ) {
    // Check if the post is being trashed
    if (wp_is_post_revision( $post->ID ) || 'trash' !== get_post_status( $post->ID )) {

    // Get the post author's email
    $post_author = get_post_field('post_author', $post->ID );
    $author_email = get_the_author_meta('user_email', $post_author);

    // Compose and send the notification email
    $subject = 'Your post is about to be trashed';
    $message = 'Dear author, your post is scheduled to be trashed. Please review or take action if needed.';
    wp_mail($author_email, $subject, $message);

    return $trash;
add_filter('pre_trash_post', 'send_trash_notification');

Content review and approval

In a collaborative content creation environment, you might require a review and approval process before posts are trashed. The pre_trash_post filter can be used to integrate such workflows, allowing administrators to review and approve posts before they are permanently deleted.

Content recycling

Sometimes, you may want to recycle or republish trashed posts. With the pre_trash_post filter, you can move posts to a “draft” status instead of deleting them. This allows you to easily restore, revise, and republish content, saving you time and effort.

function recycle_post_on_trash( $trash, $post, $previous_status ) {
    // Check if the post is being trashed
    if (wp_is_post_revision( $post->ID ) || 'trash' !== get_post_status( $post->ID )) {

    // Change the post status to 'draft'
        'ID' => $post_id,
        'post_status' => 'draft',

    return $trash;
add_filter('pre_trash_post', 'recycle_post_on_trash');

Prevent accidental deletions

Mistakes happen, and sometimes posts are accidentally moved to the trash. By implementing the pre_trash_post filter, you can add a confirmation step or a custom warning message to help prevent accidental deletions. This is especially valuable when multiple users have access to your WordPress site.


In summary, the pre_trash_post filter in WordPress is a versatile tool that can significantly improve your content management process. By harnessing its power, you can automate tasks, prevent errors, and enhance collaboration within your team. Whether you’re an individual blogger or managing a large content-rich website, this filter can be a game-changer in maintaining a streamlined and efficient workflow.

As you integrate the pre_trash_post filter into your WordPress site, you’ll discover even more ways to tailor it to your specific needs and preferences, making your content management experience more enjoyable and productive.

Was this article helpful?