wp_revisions_to_keep( WP_Post $post ): int

Determines how many revisions to retain for a given post.

Description

By default, an infinite number of revisions are kept.

The constant WP_POST_REVISIONS can be set in wp-config to specify the limit of revisions to keep.

Parameters

$postWP_Postrequired
The post object.

Return

int The number of revisions to keep.

Source

function wp_revisions_to_keep( $post ) {
	$num = WP_POST_REVISIONS;

	if ( true === $num ) {
		$num = -1;
	} else {
		$num = (int) $num;
	}

	if ( ! post_type_supports( $post->post_type, 'revisions' ) ) {
		$num = 0;
	}

	/**
	 * Filters the number of revisions to save for the given post.
	 *
	 * Overrides the value of WP_POST_REVISIONS.
	 *
	 * @since 3.6.0
	 *
	 * @param int     $num  Number of revisions to store.
	 * @param WP_Post $post Post object.
	 */
	$num = apply_filters( 'wp_revisions_to_keep', $num, $post );

	/**
	 * Filters the number of revisions to save for the given post by its post type.
	 *
	 * Overrides both the value of WP_POST_REVISIONS and the 'wp_revisions_to_keep' filter.
	 *
	 * The dynamic portion of the hook name, `$post->post_type`, refers to
	 * the post type slug.
	 *
	 * Possible hook names include:
	 *
	 *  - `wp_post_revisions_to_keep`
	 *  - `wp_page_revisions_to_keep`
	 *
	 * @since 5.8.0
	 *
	 * @param int     $num  Number of revisions to store.
	 * @param WP_Post $post Post object.
	 */
	$num = apply_filters( "wp_{$post->post_type}_revisions_to_keep", $num, $post );

	return (int) $num;
}

Hooks

apply_filters( ‘wp_revisions_to_keep’, int $num, WP_Post $post )

Filters the number of revisions to save for the given post.

apply_filters( “wp_{$post->post_type}_revisions_to_keep”, int $num, WP_Post $post )

Filters the number of revisions to save for the given post by its post type.

Changelog

VersionDescription
3.6.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Example

    This code notifies a user when the post they are working has reached the limit defined by wp_revisions_to_keep

    /**
     * Notify the User When they are editing a post that has reached the limit defined by wp_revisions_to_keep
     */
    function wpdocs_myplugin_admin_notices() {
        global $post;
        $revisions = wp_get_post_revisions( $post->ID );
        if ( isset( $post ) && wp_revisions_to_keep( $post ) <= count( $revisions ) ) { ?>
            <div class="error">
                <p><?php _e( 'Maximum number of revisions reached. Explain some more to your users here', 'myplugin-text-domain' ); ?></p>
            </div>
        <?php
        }
    }
    add_action( 'admin_notices', 'wpdocs_myplugin_admin_notices' );

You must log in before being able to contribute a note or feedback.