Republish Old Posts Pro Documentation

SSP — Republish Old Posts Pro (Docs)

SSP Documentation

Republish Old Posts Pro

Admin Screens

The plugin adds a top-level menu item Republish Old Posts Pro (update icon) with three tabs:

General Tab
  • Enable/disable general republishing schedule
  • Choose content type (Posts or WooCommerce Products)
  • Set republish interval (minutes, hours, days, weeks, months)
  • Selection method (random from oldest pool or oldest first)
  • Category filtering for posts or product categories
  • Manual “Run Once Now” button
Marked Pool Tab
  • Enable priority queue with separate schedule
  • Choose content type (Posts or Products)
  • Configure independent interval and selection method
  • Set cooldown period (hours, days, weeks, months, years)
  • Auto-include entire categories
  • Hide/show row actions in post lists
  • View current priority queue with source tracking
Activity / Logs Tab
  • Enable/disable activity logging
  • View up to 200 most recent republished items
  • Track post type, original date, last republished timestamp
  • See which items are in priority queue
  • Full-width sortable table display

Navigation

Menu LocationRepublish Old Posts Pro (update icon) in the WP admin sidebar at priority 80
PermissionsOnly users with manage_options capability can access settings
Settings Pageadmin.php?page=ssp-republish-posts

How It Works

Republish Old Posts Pro uses WordPress’s built-in WP-Cron system to automatically refresh old content by updating publication dates:

  1. Activation: Default settings are created and WP-Cron events are scheduled based on configured intervals
  2. Scheduled Execution: At each interval tick, the plugin selects a candidate post/product according to current rules
  3. Date Update: Selected item’s post_date and post_date_gmt are updated to current time
  4. Metadata Tracking: Item receives _ssp_last_republished meta timestamp for tracking and cooldown
  5. Cache Clearing: Post cache is cleared to ensure fresh data throughout WordPress

Two Independent Pools

General Pool

  • Category-filtered automatic republishing
  • Runs on its own independent schedule
  • Can be enabled/disabled separately
  • Best for broad content refresh strategies

Priority Queue (Marked Pool)

  • Manually selected high-priority items
  • Separate schedule from general pool
  • Cooldown protection prevents over-republishing
  • Ideal for evergreen or seasonal content
SEO Impact: Republishing changes the post’s publish date, affecting archive ordering and “freshness” signals. This is intentional and helps surface evergreen content to both users and search engines.

Selection Methods

Oldest FirstAlways selects the chronologically oldest eligible item based on original publish date
Random from Oldest PoolBuilds a pool of N oldest items (configurable size), then randomly selects one from that pool

WooCommerce Support

Pro version includes full support for republishing WooCommerce products alongside regular posts:

Features

  • Content Type Selection: Choose between Posts or WooCommerce Products in both General and Marked Pool tabs
  • Product Categories: Filter by product categories (product_cat taxonomy) when products are selected
  • Independent Configuration: General and Marked pools can republish different content types simultaneously
  • Product Metabox: Priority queue checkbox appears in product edit screens
  • Bulk Actions: Mark/unmark products for priority queue from product list
  • Activity Tracking: Logs show “Product” vs “Post” type labels

Requirements

WooCommerce Required: Product republishing requires WooCommerce to be installed and activated. If WooCommerce is not active, the product selection option is disabled with a clear notice explaining the requirement.

Use Cases

  • Seasonal Products: Keep seasonal items appearing fresh year after year
  • Evergreen Products: Maintain visibility for best-sellers and core catalog items
  • Product Launch Cycles: Re-promote products on a schedule without manual intervention
  • Category Refresh: Automatically rotate through entire product categories
Post Typeproduct
Taxonomyproduct_cat
Metabox LocationProduct edit screen sidebar
List ColumnAdded to Products list (Last Republished)
Row ActionsMark Priority / Unmark (if not hidden in settings)

Scheduling & Selection

Interval Configuration

Both General and Marked pools support flexible interval scheduling:

Minutes1-59 minutes (useful for high-frequency testing or very active sites)
Hours1-23 hours (default: General = 2 hours, Marked = 4 hours)
Days1+ days (recommended for most sites)
Weeks1+ weeks (for slow rotation strategies)
Months1+ months (treated as 30 days internally)
Pro Feature: Minutes and hours intervals are only available in the Pro version. This allows high-frequency republishing for active blogs and e-commerce sites.

WP-Cron Schedules

The plugin registers custom WP-Cron schedules:

  • ssp_custom_interval_general – General pool schedule
  • ssp_custom_interval_marked – Marked pool schedule

When settings are saved, existing scheduled events are cleared and new ones are created to reflect the updated intervals.

General Pool Candidate Rules

  • All published items of selected content type (posts or products)
  • Filtered by selected categories if any are chosen
  • Sticky posts are ignored (ignore_sticky_posts=true)
  • Ordered by original publish date ascending (oldest first)
  • No cooldown enforcement

Priority Queue Candidate Rules

  • Union of two sources:
    • Items with _ssp_mark_for_republish=1 meta flag
    • All items in auto-include categories
  • Filtered by content type (posts or products)
  • Cooldown period enforced (if configured > 0)
  • Ordered by original publish date
  • Pool size and selection method applied

Selection Mode Details

Random from Oldest Pool
  • Fetches N oldest eligible items (pool size)
  • Randomly selects one from that pool
  • Provides variety while prioritizing old content
  • Default pool size: General=50, Marked=25
Oldest First
  • Deterministically selects the single oldest item
  • Ensures systematic rotation through all content
  • Predictable republishing order
  • Best for complete catalog coverage

Priority Queue (Marked Pool)

The priority queue is a separate republishing system for high-value content that needs more frequent or controlled republishing:

Two Ways to Add Items

Manual Marking

  • Check “Add to priority queue” in post/product sidebar metabox
  • Use “Mark as Priority” bulk action in lists
  • Click “Mark Priority” row action (if enabled)
  • Sets _ssp_mark_for_republish=1 meta

Auto-Include Categories

  • Select categories in Marked Pool settings
  • ALL items in those categories are automatically included
  • No per-item marking required
  • Ideal for entire content sections

Cooldown Protection

Prevents over-republishing the same item:

PurposeMinimum time that must pass before the same item can be republished again
UnitsHours, days, weeks, months (30 days), years (365 days)
Default24 hours
DisableSet value to 0 for no cooldown
TrackingBased on _ssp_last_republished timestamp meta
Pro Feature: Cooldown protection with granular time units (including hours and years) is exclusive to Pro.

Current Queue Display

The Marked Pool tab shows a full-width table of all items currently in the priority queue:

  • Title: Edit link to the item
  • Original Date: When the item was first published
  • Last Republished: Most recent republish timestamp (or “Never”)
  • Source: “Marked” (manual) or “Category” (auto-included)
  • Actions: “Unmark” button for manually marked items

Row Action Visibility

The “Mark Priority” / “Unmark” quick actions in post/product lists can be hidden if you want to prevent casual toggling by editors. Enable the checkbox in settings to remove these row actions while keeping metabox and bulk action access.

Union Logic

The priority queue uses a union of marked items and category items, meaning:

  • An item can be in the queue via marking, category membership, or both
  • Unmarking an item that’s in an auto-include category keeps it in the queue
  • Removing category from auto-include removes those items unless also manually marked
  • Duplicates are automatically eliminated in the union

Per-Post Controls

The plugin adds several UI elements to post and product edit screens and lists:

Metabox (Sidebar)

Location: Post/Product edit screen sidebar, “Republish Priority” box

  • Checkbox: “Add to priority queue” – toggles _ssp_mark_for_republish meta
  • Timestamp Display: Shows last republished date/time or “Never”
  • Nonce Protection: Saves securely via ssp_republish_post_box nonce
  • Permission Check: Only users with edit_post capability can save

List Column

Added to both Posts and Products admin lists after the Title column:

Column Label“Last Republished”
ContentFormatted date/time using site’s date/time format settings, or “Never”
Data Source_ssp_last_republished post meta (Unix timestamp)

Row Actions

Quick links appear in the post/product list hover actions (unless hidden in settings):

  • “Mark Priority”: Shown when item is not marked, sets flag to 1
  • “Unmark”: Shown when item is marked, deletes the meta flag
  • Security: Nonce-protected with ssp_toggle_mark_{post_id}
  • URL Parameters: ssp_toggle_mark and ssp_mark_value

Bulk Actions

Available in the post/product list bulk action dropdown:

Mark as PrioritySets _ssp_mark_for_republish=1 on all selected items
Unmark PriorityDeletes _ssp_mark_for_republish meta from all selected items

Success notices show the number of items affected, with proper singular/plural handling.

Activity & Logs

The Activity / Logs tab provides visibility into republishing history:

Enable/Disable Logging

Checkbox option: “Enable Activity Logs” – controls visibility of the logs table. When disabled, the table is hidden and a message is shown. Setting is stored in ssp_activity_enabled option (default: enabled).

Log Display

Full-width striped table showing up to 200 most recently republished items:

QueryPosts and products with _ssp_last_republished meta, ordered by that meta value (newest first)
Limit200 items maximum
Status FilterOnly published items shown

Table Columns

  • Title: Linked to edit screen
  • Type: “Post” or “Product” label based on post type
  • Original Date: Original publish date (unchanged by republishing)
  • Last Republished: Formatted timestamp from meta, or “Never”
  • Marked?: “Yes” if _ssp_mark_for_republish=1, otherwise “No”
Note: The log is informational only and does not affect scheduling. It shows the last 200 items regardless of which pool (general or marked) republished them.

Empty State

When no items have been republished yet, a centered message displays: “Nothing republished yet.”

Troubleshooting

No items are being republished automatically
  1. Verify the relevant pool (General or Marked) is enabled on its tab
  2. Check that your interval value and unit are saved correctly
  3. Confirm categories are selected (if you want category filtering) and contain published items
  4. Test with “Run Once Now” button to isolate WP-Cron from selection logic
  5. On low-traffic sites, WP-Cron may not fire regularly – consider triggering wp-cron.php via system cron or external service
  6. Check for plugin conflicts that might clear scheduled events
Priority queue won’t pick any items
  • Ensure at least one item is explicitly marked OR a category is selected in “Auto-Include Categories”
  • Check if cooldown period is excluding recently republished items – try setting to 0 temporarily
  • Verify the correct content type (Posts vs Products) is selected
  • Look at the “Current Priority Queue” table on the Marked Pool tab to confirm items are showing
  • Test with “Run Once Now” on Marked Pool tab
WooCommerce products option is grayed out

The product option requires WooCommerce to be installed and activated. Install WooCommerce from the WordPress plugin repository, activate it, then return to settings to enable product republishing.

List column shows “Never” but I republished manually

The “Last Republished” column reflects only this plugin’s automatic republishing via the _ssp_last_republished meta timestamp. Manual edits or republishing through other methods won’t update this value. The plugin only tracks its own automated republishes.

Manual “Run Once Now” doesn’t seem to work
  • Check the Activity / Logs tab to confirm if an item was actually republished
  • With “Oldest first” mode and specific filters, it may pick the same item multiple times legitimately
  • If your candidate set is empty due to filters, no action will occur – verify category selections
  • For marked pool, verify at least one item is in the queue and eligible (not in cooldown)
Changed intervals but still runs at old schedule

Saving settings clears and reschedules events, but a previously queued cron job might still be close to firing. Wait for one complete cycle of the old interval, or use a cron manager plugin to manually clear events and resave settings. The next execution will use the new schedule.

Cooldown not working as expected
  • Cooldown only applies to the Marked Pool, not General pool
  • Cooldown is based on _ssp_last_republished timestamp – if this meta doesn’t exist, the item is considered eligible
  • Current time is compared to (last republish time + cooldown seconds)
  • Setting cooldown to 0 disables it completely
  • Check the Activity / Logs tab to see actual last republish times
Bulk action notices not appearing

Bulk action success notices rely on query parameters ssp_bulk_marked or ssp_bulk_unmarked. If you’re redirected to a different page or query parameters are stripped by another plugin, notices won’t show. Check the post/product metabox to confirm the marking actually worked.

Row actions still showing after hiding them

The “Hide quick mark/unmark links” option only affects the Posts and Products list tables. The metabox on edit screens and bulk actions remain available. If row actions are still showing, verify you saved the Marked Pool settings with the checkbox enabled.

Category filter not working for products

When “WooCommerce Products” is selected as content type, the plugin uses product_cat taxonomy instead of regular category. Make sure you’re selecting product categories, not post categories. The category selector automatically switches based on content type.

Test / Verification

Follow these steps to verify the plugin is working correctly:

General Pool Test

  1. Create 3-5 test posts with different publish dates in a category like “Test Evergreen”
  2. Go to General tab and enable republishing
  3. Set interval to “Every 5 minutes” for testing
  4. Choose “Random (from oldest pool)” with pool size 3
  5. Select only the “Test Evergreen” category
  6. Click Save Settings
  7. Click Run Once Now
  8. Visit Posts list and confirm one post’s date changed to now
  9. Check “Last Republished” column shows current timestamp
  10. Go to Activity / Logs tab and verify the entry appears

Priority Queue Test

  1. Pick one of your test posts and edit it
  2. In the “Republish Priority” metabox, check “Add to priority queue”
  3. Save the post
  4. Go to Marked Pool tab and enable priority queue
  5. Set interval to “Every 5 minutes”
  6. Choose “Oldest first” selection method
  7. Set cooldown to 0 for testing
  8. Click Save Settings
  9. Verify your marked post appears in “Current Priority Queue” table
  10. Click Run Once Now
  11. Confirm the marked post was republished (check date and logs)

WooCommerce Product Test

(Requires WooCommerce installed and activated)

  1. Create 2-3 test products in a product category
  2. Go to General tab
  3. Change Content Type to “WooCommerce Products”
  4. Select your test product category
  5. Click Run Once Now
  6. Check Products list – one product date should update
  7. Verify “Last Republished” column appears and shows timestamp

Cooldown Test

  1. Mark a post for priority queue
  2. Run marked pool once now (cooldown = 0)
  3. Change cooldown to “24 hours”
  4. Try running again immediately
  5. Verify the same post is NOT republished (it’s in cooldown)
  6. Check logs – no new entry should appear

Bulk Action Test

  1. Go to Posts or Products list
  2. Select 2-3 items using checkboxes
  3. Choose “Mark as Priority” from Bulk Actions dropdown
  4. Click Apply
  5. Verify success notice appears with count
  6. Go to Marked Pool tab and confirm all appear in queue
  7. Return to list, select same items, use “Unmark Priority”
  8. Verify they’re removed from queue
Pro Tip: Use short intervals (5-10 minutes) during testing, then increase to realistic values (hours/days) for production use. Remember to trigger WP-Cron manually on low-traffic test sites.