SSP Documentation
Admin Screen
The plugin adds a top-level admin menu SSP Republish (update icon) with a single page and three tabs:
General
- Enable General Republish — turn the main (category-filtered) schedule on/off.
- Interval — value + unit (minutes, hours, days, weeks, months).
- Selection — Random (from oldest pool) or Oldest-first. When Random is chosen you can set the Oldest Pool Size that the random pick is sampled from.
- Categories — limit to specific post categories (optional). A “Select All” helper is included.
- Run General Once Now — manual one-shot execution (respects current settings).
Marked Pool
- Enable Marked Pool Republish — separate schedule dedicated to “marked” posts.
- Interval / Selection — same controls as General (random pool with size, or oldest-first).
- Cooldown — minimum wait before the same marked post can be republished again (0 = none).
- Include Entire Categories — treat every post in selected categories as marked (in addition to per-post checkboxes).
- Row Action Visibility — optionally remove “Mark to Marked Pool” from the Posts list.
- Run Marked Once Now — manual one-shot execution for the marked pool.
Activity / Logs
- Enable Logs — toggles the table display.
- Table — shows recently republished posts (post, original date, last republished, marked?); full-width layout.
How It Works
- On activation, defaults are added and WP-Cron events are scheduled based on your chosen intervals.
- At each tick, the plugin selects a candidate post according to the current tab’s rules and republishes it by bumping its
post_date
/post_date_gmt
to now. - The republished post gets a meta timestamp
_ssp_last_republished
used by lists/logs and cooldown checks. - Manual “Run Once Now” buttons trigger the same logic immediately, without waiting for cron.
Scheduling & Selection
Intervals
You can set intervals in minutes, hours, days, weeks, months. Internally, months are treated as 30 days for scheduling. When you save settings, the plugin clears existing events for that pool and schedules new ones.
General Pool Candidates
- All published posts (
post
type) are considered. - If you selected categories, the candidate set is restricted to those categories.
- Sticky posts are ignored for ordering (standard
ignore_sticky_posts
behavior).
Marked Pool Candidates
- Union of:
- Posts explicitly marked via per-post checkbox (
_ssp_mark_for_republish = 1
), and - All posts in categories selected under “Include Entire Categories”.
- Posts explicitly marked via per-post checkbox (
- Cooldown (if set) excludes posts republished too recently.
- Selection mode (oldest-first vs random from oldest pool) decides the final pick.
Marked Pool Details
Two ways to “mark”
- Per-post: Check “Mark this post for the Marked Pool” in the post’s sidebar box.
- By category: Choose one or more categories; all posts in those categories are treated as marked automatically.
Cooldown
- Prevents the same marked post from being republished again until the cooldown has elapsed.
- Units: hours, days, weeks, months, years (months = 30 days; years = 365 days).
- Set to 0 to disable cooldown.
Visibility in Admin
- “Marked Posts” table on the tab shows both kinds of marked posts (explicit and category-based) with last republished time and an Unmark button for explicit ones.
- Optional: hide the Posts-list row action if your editors shouldn’t toggle marked state there.
Per-Post Controls
- Metabox (Republish Control): checkbox to include/exclude a post from the Marked Pool. Also displays the last republished timestamp.
- Posts list column (Last Republished): shows the timestamp per post; “Never” if it hasn’t been republished yet.
- Row action (Mark to Marked Pool / Unmark): quick toggle with nonce protection (can be hidden in settings).
Activity & Logs
When enabled, the Activity / Logs tab lists up to the 200 most recently republished posts (published status only), newest first. Columns:
- Post — edit-link to the post.
- Original Date — the post’s original publish date.
- Last Republished — last time this plugin bumped the date.
- Marked? — whether the post is explicitly marked.
Troubleshooting
No posts are being republished
- Verify the pool is enabled on the relevant tab.
- Check your interval (value & unit) and save to re-schedule.
- If categories are selected, ensure those categories actually contain published posts.
- Try Run Once Now to confirm logic works independent of WP-Cron.
- On low-traffic sites, WP-Cron may not fire often; consider real cron hitting
wp-cron.php
if needed.
Marked Pool won’t pick anything
- Ensure at least one post is explicitly marked or a category is included.
- Cooldown may be excluding recent posts; reduce or set to 0 for testing.
Posts list column shows “Never”
The column reflects the plugin’s own republish events via _ssp_last_republished
. If you republished manually outside the plugin, it stays “Never”.
Manual “Run Once Now” appears to do nothing
- With Oldest-first mode and filters set, it may legitimately pick the same post as the next scheduled run — check the Activity / Logs tab.
- If the candidate set is empty (e.g., all filtered out), no change will occur.
I changed intervals but it still runs at the old time
Saving settings clears and re-schedules events, but a previously queued tick might still be close to firing. Wait for one full cycle, or clear events in a cron manager plugin and resave settings.
Test / Verification
- Create 3–5 test posts in a category “Evergreen”.
- In General, enable, choose “Every 5 minutes”, Random (from oldest pool) with size 3, and select the “Evergreen” category; save.
- Click Run General Once Now. Open the Posts list and confirm one post’s date is bumped to now and the “Last Republished” value updates.
- Mark a specific post via the metabox. In Marked Pool, enable with a short interval, cooldown 0, and mode “Oldest-first”; save.
- Click Run Marked Once Now; verify the marked post republished (even if it wasn’t the oldest overall in General).
- Enable Activity / Logs and confirm entries appear, newest first.
wp-cron.php
via your browser or a system cron.