Using WordPress ‘post_limits_request’ PHP filter

The post_limits_request WordPress PHP filter allows you to modify the LIMIT clause of a query, typically used by caching plugins.

Usage

add_filter('post_limits_request', 'my_custom_post_limits_request', 10, 2);

function my_custom_post_limits_request($limits, $query) {
  // your custom code here
  return $limits;
}

Parameters

  • $limits (string): The LIMIT clause of the query.
  • $query (WP_Query): The WP_Query instance (passed by reference).

More information

See WordPress Developer Resources: post_limits_request

Examples

Limit posts to the first 5

In this example, we limit the query to return only the first 5 posts.

function limit_posts_to_five($limits, $query) {
  $limits = 'LIMIT 5';
  return $limits;
}

add_filter('post_limits_request', 'limit_posts_to_five', 10, 2);

No limit on archive pages

In this example, we remove the post limit on archive pages.

function no_limit_on_archive($limits, $query) {
  if ($query->is_archive()) {
    $limits = '';
  }
  return $limits;
}

add_filter('post_limits_request', 'no_limit_on_archive', 10, 2);

Limit posts to 10 on search results

In this example, we limit the search results to display only 10 posts.

function limit_search_results($limits, $query) {
  if ($query->is_search()) {
    $limits = 'LIMIT 10';
  }
  return $limits;
}

add_filter('post_limits_request', 'limit_search_results', 10, 2);

Custom limit based on post type

In this example, we limit posts based on their post type.

function custom_limit_by_post_type($limits, $query) {
  if ($query->is_post_type_archive('portfolio')) {
    $limits = 'LIMIT 6';
  } elseif ($query->is_post_type_archive('news')) {
    $limits = 'LIMIT 8';
  }
  return $limits;
}

add_filter('post_limits_request', 'custom_limit_by_post_type', 10, 2);

Increase limit for logged-in users

In this example, we increase the post limit for logged-in users.

function increase_limit_for_logged_users($limits, $query) {
  if (is_user_logged_in()) {
    $limits = 'LIMIT 15';
  }
  return $limits;
}

add_filter('post_limits_request', 'increase_limit_for_logged_users', 10, 2);