Using WordPress ‘found_posts’ PHP filter

The found_posts WordPress PHP filter allows you to modify the number of posts found by a WP_Query instance.

Usage

add_filter('found_posts', 'my_custom_function', 10, 2);

function my_custom_function($found_posts, $query) {
    // your custom code here
    return $found_posts;
}

Parameters

  • $found_posts (int): The number of posts found by the query.
  • $query (WP_Query): The WP_Query instance (passed by reference).

More information

See WordPress Developer Resources: found_posts

Examples

Adjusting Found Posts Count

Modify the number of found posts by subtracting a custom offset.

add_filter('found_posts', 'adjust_found_posts_count', 10, 2);

function adjust_found_posts_count($found_posts, $query) {
    $offset = 10; // custom offset value
    return $found_posts - $offset;
}

Ignoring Sticky Posts

Decrease the number of found posts by the number of sticky posts.

add_filter('found_posts', 'ignore_sticky_posts', 10, 2);

function ignore_sticky_posts($found_posts, $query) {
    $sticky_posts = count(get_option('sticky_posts'));
    return $found_posts - $sticky_posts;
}

Limiting Found Posts

Limit the number of found posts to a maximum value.

add_filter('found_posts', 'limit_found_posts', 10, 2);

function limit_found_posts($found_posts, $query) {
    $max_posts = 50;
    return min($found_posts, $max_posts);
}

Custom Post Type Count Adjustment

Adjust the number of found posts for a specific custom post type.

add_filter('found_posts', 'custom_post_type_count_adjustment', 10, 2);

function custom_post_type_count_adjustment($found_posts, $query) {
    if ($query->get('post_type') == 'my_custom_post_type') {
        return $found_posts - 5;
    }
    return $found_posts;
}

Exclude Posts From a Specific Category

Decrease the number of found posts by the number of posts in a specific category.

add_filter('found_posts', 'exclude_category_posts', 10, 2);

function exclude_category_posts($found_posts, $query) {
    $category_id = 7; // category ID to exclude
    $category_posts_count = count(get_posts(['cat' => $category_id]));
    return $found_posts - $category_posts_count;
}