SSP Documentation
Admin Screens
The plugin adds a top-level menu item Republish Old Posts Pro (update icon) with three tabs:
- 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
- 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
- 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 Location | Republish Old Posts Pro (update icon) in the WP admin sidebar at priority 80 |
|---|---|
| Permissions | Only users with manage_options capability can access settings |
| Settings Page | admin.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:
- Activation: Default settings are created and WP-Cron events are scheduled based on configured intervals
- Scheduled Execution: At each interval tick, the plugin selects a candidate post/product according to current rules
- Date Update: Selected item’s
post_dateandpost_date_gmtare updated to current time - Metadata Tracking: Item receives
_ssp_last_republishedmeta timestamp for tracking and cooldown - 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
Selection Methods
| Oldest First | Always selects the chronologically oldest eligible item based on original publish date |
|---|---|
| Random from Oldest Pool | Builds 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_cattaxonomy) 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
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 Type | product |
|---|---|
| Taxonomy | product_cat |
| Metabox Location | Product edit screen sidebar |
| List Column | Added to Products list (Last Republished) |
| Row Actions | Mark Priority / Unmark (if not hidden in settings) |
Scheduling & Selection
Interval Configuration
Both General and Marked pools support flexible interval scheduling:
| Minutes | 1-59 minutes (useful for high-frequency testing or very active sites) |
|---|---|
| Hours | 1-23 hours (default: General = 2 hours, Marked = 4 hours) |
| Days | 1+ days (recommended for most sites) |
| Weeks | 1+ weeks (for slow rotation strategies) |
| Months | 1+ months (treated as 30 days internally) |
WP-Cron Schedules
The plugin registers custom WP-Cron schedules:
ssp_custom_interval_general– General pool schedulessp_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=1meta flag - All items in auto-include categories
- Items with
- 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
- 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
- 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=1meta
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:
| Purpose | Minimum time that must pass before the same item can be republished again |
|---|---|
| Units | Hours, days, weeks, months (30 days), years (365 days) |
| Default | 24 hours |
| Disable | Set value to 0 for no cooldown |
| Tracking | Based on _ssp_last_republished timestamp meta |
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_republishmeta - Timestamp Display: Shows last republished date/time or “Never”
- Nonce Protection: Saves securely via
ssp_republish_post_boxnonce - Permission Check: Only users with
edit_postcapability can save
List Column
Added to both Posts and Products admin lists after the Title column:
| Column Label | “Last Republished” |
|---|---|
| Content | Formatted 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_markandssp_mark_value
Bulk Actions
Available in the post/product list bulk action dropdown:
| Mark as Priority | Sets _ssp_mark_for_republish=1 on all selected items |
|---|---|
| Unmark Priority | Deletes _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:
| Query | Posts and products with _ssp_last_republished meta, ordered by that meta value (newest first) |
|---|---|
| Limit | 200 items maximum |
| Status Filter | Only 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”
Empty State
When no items have been republished yet, a centered message displays: “Nothing republished yet.”
Troubleshooting
No items are being republished automatically
- Verify the relevant pool (General or Marked) is enabled on its tab
- Check that your interval value and unit are saved correctly
- Confirm categories are selected (if you want category filtering) and contain published items
- Test with “Run Once Now” button to isolate WP-Cron from selection logic
- On low-traffic sites, WP-Cron may not fire regularly – consider triggering
wp-cron.phpvia system cron or external service - 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_republishedtimestamp – 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
- Create 3-5 test posts with different publish dates in a category like “Test Evergreen”
- Go to General tab and enable republishing
- Set interval to “Every 5 minutes” for testing
- Choose “Random (from oldest pool)” with pool size 3
- Select only the “Test Evergreen” category
- Click Save Settings
- Click Run Once Now
- Visit Posts list and confirm one post’s date changed to now
- Check “Last Republished” column shows current timestamp
- Go to Activity / Logs tab and verify the entry appears
Priority Queue Test
- Pick one of your test posts and edit it
- In the “Republish Priority” metabox, check “Add to priority queue”
- Save the post
- Go to Marked Pool tab and enable priority queue
- Set interval to “Every 5 minutes”
- Choose “Oldest first” selection method
- Set cooldown to 0 for testing
- Click Save Settings
- Verify your marked post appears in “Current Priority Queue” table
- Click Run Once Now
- Confirm the marked post was republished (check date and logs)
WooCommerce Product Test
(Requires WooCommerce installed and activated)
- Create 2-3 test products in a product category
- Go to General tab
- Change Content Type to “WooCommerce Products”
- Select your test product category
- Click Run Once Now
- Check Products list – one product date should update
- Verify “Last Republished” column appears and shows timestamp
Cooldown Test
- Mark a post for priority queue
- Run marked pool once now (cooldown = 0)
- Change cooldown to “24 hours”
- Try running again immediately
- Verify the same post is NOT republished (it’s in cooldown)
- Check logs – no new entry should appear
Bulk Action Test
- Go to Posts or Products list
- Select 2-3 items using checkboxes
- Choose “Mark as Priority” from Bulk Actions dropdown
- Click Apply
- Verify success notice appears with count
- Go to Marked Pool tab and confirm all appear in queue
- Return to list, select same items, use “Unmark Priority”
- Verify they’re removed from queue