Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

WordPress has no built-in per-post RSS delay setting. To keep a post off RSS for a fixed period, either schedule the post for a future publication time (which also hides it from the site) or filter only feed queries with a date condition (which leaves the post live on the site). Feed readers and aggregators can still poll at different times and cache XML, so a WordPress cutoff is an eligibility rule—not a guaranteed delivery time.

Choose the right kind of delay

Method What readers see on your site What appears in RSS Maintenance
Schedule publication The post remains unpublished until its scheduled date and time. It enters feeds when WordPress publishes it. No code; uses WordPress’s editorial controls.
Feed-only query filter The post can be live at its normal permalink and in site archives. The post is excluded until the configured age, such as six hours. Requires a site-specific plugin or PHP snippet, plus testing after WordPress and caching changes.

Use scheduling when the entire publication must wait. Use a feed-only filter when your site should publish immediately but syndication should lag.

Option 1: Schedule the post for later

Standard WordPress posts are used to create RSS feeds and are normally ordered newest first. A post with a future publication date has WordPress’s future status, so it is not publicly published—and cannot appear in the normal post feed—until that date.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Open the post in the WordPress editor.
  2. In the Publish or Status and visibility panel, find the publication date and time.
  3. Set the intended release time in the site’s configured timezone.
  4. Choose Schedule (or update the existing scheduled post).
  5. After the scheduled time, check both the post permalink and the site’s RSS URL.

This is the safest no-code approach, but it delays every channel controlled by publication status: the permalink, archives, feeds, and other queries that exclude future posts.

Option 2: Delay only RSS and Atom feeds

For a post that should be visible on the site immediately, add a date condition to the main feed query. WordPress’s WP_Query supports date-based filtering, and the pre_get_posts action lets you adjust query variables before the query runs.

Site-specific PHP example

Place this in a small site-specific plugin or another controlled code location, not in a theme that may be replaced during an update. Test it on staging first.

<?php
add_action( 'pre_get_posts', function ( $query ) {
    if ( is_admin() || ! $query->is_feed() || ! $query->is_main_query() ) {
        return;
    }

    $delay_hours = 6;
    $cutoff = gmdate(
        'Y-m-d H:i:s',
        time() - ( $delay_hours * HOUR_IN_SECONDS )
    );

    $query->set( 'date_query', array(
        array(
            'column'    => 'post_date_gmt',
            'before'    => $cutoff,
            'inclusive' => true,
        ),
    ) );
} );

What the snippet does

  • $delay_hours = 6 defines the waiting window. Change it to the number of hours your publication workflow requires.
  • $query->is_feed() limits the change to RSS or Atom feed requests.
  • $query->is_main_query() avoids changing unrelated secondary queries.
  • The cutoff is calculated in UTC and compared with post_date_gmt, avoiding a mismatch between the server timezone and stored GMT dates.
  • inclusive => true allows an item at or before the cutoff to enter the feed.

The result is a rolling age rule: a post remains excluded until its GMT publication timestamp is at least the configured number of hours old. The code is a practical combination of WordPress’s documented query parameters and hooks; it is not a setting exposed in the Reading screen.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When to use lower-level query hooks

If you need to alter SQL beyond a date query, posts_where can add a WHERE condition and posts_clauses can change multiple SQL clauses. These hooks require more care because a malformed condition can hide items or affect queries you did not intend to change. Keep feed detection and main-query checks in place, and confirm that the code path actually applies to your feed requests.

Why Reading settings and update-period filters do not solve this

WordPress’s Reading settings can change the number of items in a feed and whether each item contains an excerpt or full content. They do not provide a per-post waiting period.

The rss_update_period filter changes the update-period metadata advertised by a feed. Its accepted periods include hourly, daily, weekly, monthly, and yearly. It does not remove a new item or hold it for a specified number of hours; subscribers may still poll whenever their own schedule dictates.

Test the delay on your actual feed endpoints

  1. Create a test post and record its publication time in UTC.
  2. If you used the feed-only method, confirm that the post is visible at its normal permalink and in the intended site archives.
  3. Fetch the site’s RSS URL and verify that the item is absent before the cutoff.
  4. Fetch the feed again after the delay and verify that the item appears with the expected publication date.
  5. Purge, bypass, or temporarily disable page, feed, and CDN caches while testing. Cached XML can make an old response look like a query failure.
  6. Check every endpoint your site exposes, including category, author, tag, and custom-post-type feeds.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common failures

The post is missing from the site as well as the feed

Check whether the post was scheduled rather than published. Scheduling intentionally delays the whole publication. If the post must be live, publish it normally and use a feed-scoped filter.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The post appears immediately despite the filter

Confirm that the request reaches the main feed query and that the snippet is active. Then purge feed and CDN caches. Inspect the exact feed URL being tested; a plugin may provide a separate endpoint that does not use the same query.

Older posts disappeared from archives or other queries

The filter is probably running without the feed and main-query guards, or a broader SQL hook is altering unrelated requests. Restore the scope checks and retest on staging before re-enabling production caching.

Different subscribers see the item at different times

That is expected. WordPress controls when the item becomes eligible for inclusion in generated XML. Feed readers, aggregators, and intermediate caches decide when to request and refresh that XML.

Operational considerations

  • Keep the delay value documented with the site’s code so editors know the intended syndication window.
  • Use UTC consistently in custom date conditions and verify the site timezone when comparing the editor’s scheduled time with database values.
  • Retest after WordPress core, feed, SEO, caching, or CDN changes.
  • Review custom post-type feeds separately; the example targets the feed’s main query and may not match every plugin-generated feed.

For a delay that must apply reliably across every channel, scheduling is the built-in choice. For a live site with intentionally delayed syndication, a narrowly scoped feed query filter provides the needed control, provided it is tested with real endpoints and cache layers.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.