Scheduler Pro releases
Scheduler Pro is a WordPress plugin that automates future post scheduling using human-like timing patterns (gaussian activity peaks, randomized minutes/seconds) instead of robotic, evenly-spaced dates. Includes anti-duplicate locking, batch processing for large queues, and a real-time monitoring dashboard.
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/kr4v3n/scheduler-pro/releases/download/v2.6.5/scheduler-pro-2.6.5.zipReadme
=== Scheduler Pro === Contributors: Kr4v3n Tags: scheduler, scheduling, seo, automation, cron, publication Requires at least: 5.8 Tested up to: 6.4 Requires PHP: 7.4 Stable tag: 2.6.5 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html
Ultra-smart automatic scheduler for WordPress: advanced post publishing management with human-like behavior and real-time monitoring.
== Description ==
Scheduler Pro is a professional WordPress plugin that automates and optimizes your post scheduling with a revolutionary approach: mimicking human behavior.
= 🎯 Why Scheduler Pro? =
Most scheduling plugins use simple algorithms that create detectable patterns. Scheduler Pro goes much further:
- Gaussian distribution with activity peaks at 9am, 2pm and 5pm
- Pattern avoidance: variable minutes and seconds, never overly round values
- Batch processing: handles thousands of posts without timing out
- Locking system: prevents concurrent runs
- Real-time monitoring: full dashboard with statistics
= ✨ Core Features =
🚀 Ultra-Human Scheduling
- Date generator based on gaussian distributions
- Natural activity peaks at high-publishing hours
- Random minutes avoiding round values (00, 15, 30, 45)
- Variable seconds to eliminate any detectable pattern
⚡ Performance & Reliability
- Batch processing: 100 posts at a time to avoid timeouts
- Memory management: stops automatically if RAM usage exceeds 80% to avoid crashes
- Locking system: prevents duplicate runs, even on a double-click, via atomic direct SQL queries
- Persistent task queue: full traceability and history of every scheduling run
📊 Advanced Monitoring
- Real-time dashboard with full statistics
- 3-month distribution chart (by week) plus a 2-month day-by-day calendar view
- Automatic issue detection (inactive cron, stuck tasks)
- Email alert if the scheduler stops running (throttled to 1/24h)
- Activity log with automatic rotation
🔧 Smart Configuration
- Flexible cadence: schedule by day, week, or month (e.g. "2/week", "6/month"), with automatic day distribution
- Category exclusion: keep entire categories out of auto-scheduling
- Skip weekends: optionally never publish on Saturday or Sunday
- Preview before running: see the exact resulting dates before committing anything
- Adhesive Mode: adds new posts after the existing ones without touching them
- Full Reset Mode: reorganizes the ENTIRE backlog starting tomorrow
- Manual locking: lock the date of specific posts
- Custom time range: 7am-8pm by default, adjustable to your needs
= 🎨 Modern Interface =
Intuitive Tabs
- Settings: full configuration with an interactive simulator
- Monitoring: overview of system health
- Logs: real-time activity log with level filtering
- About: built-in documentation and help
Clean Design
- Modern, responsive interface
- Visual statistics with charts
- Real-time health indicators
- Dark theme for the logs
= 📈 Use Cases =
SEO Blog Publish regularly with no effort, with a 100% natural appearance for search engines.
Multi-Author Site Manage hundreds of scheduled posts with individual priorities and locks.
Content Platform Automate the publication of thousands of posts with professional reliability.
= 🔒 Security & Privacy =
- No external data: everything stays on your server
- Permission checks (nonces, capabilities)
- Anti-concurrency locking via atomic direct SQL queries
- Automatic log rotation (500-line limit)
= ⚙️ Technical Requirements =
Requirements
- WordPress 5.8+
- PHP 7.4+
- MySQL 5.7+
- PHP memory: 128 MB minimum (256 MB recommended)
Compatibility
- ✅ Multisite
- ✅ WP-Cron and server cron
- ✅ All WordPress themes
- ✅ WPML compatible
Performance
- Before v2.0: 1000 posts = ~50s (frequent timeouts)
- After v2.0: 1000 posts = ~5s ✅
- Memory footprint: ~50 MB (vs 500 MB in v1.x)
== Installation ==
= Automatic Installation =
- Log in to your WordPress admin
- Go to Plugins > Add New
- Search for "Scheduler Pro"
- Click Install then Activate
= Manual Installation =
- Download the plugin's ZIP file
- Go to Plugins > Add New > Upload Plugin
- Choose the ZIP file and click Install
- Activate the plugin
= Initial Configuration =
- Go to Scheduler Pro in the admin menu
- Configure your settings:
- Cadence: 3-5/day recommended for natural-looking behavior, or a week/month cadence (e.g. "2/week") for a lighter rhythm
- Time range: 7am-8pm to mimic human activity
- Auto mode: enabled for a daily run at 00:30
- Save your settings
- Click "Run Scheduling Now" for the first test
= Advanced Configuration (Optional) =
Set Up a Server Cron (Recommended)
For maximum reliability, replace WP-Cron with a real server cron:
-
Disable WP-Cron: add this to
wp-config.phpdefine('DISABLE_WP_CRON', true); -
Create a cron job (cPanel or SSH)
*/15 * * * * wget -q -O - https://your-site.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Or via PHP:
*/15 * * * * cd /path/to/wordpress && php wp-cron.php >/dev/null 2>&1
== Frequently Asked Questions ==
= Does the plugin work on all hosting providers? =
Yes! Scheduler Pro is compatible with all standard WordPress hosting. On shared hosting with strict limits, the batching and memory management system guarantees timeout-free operation.
= Can I lock certain posts so they don't get rescheduled? =
Absolutely! Every post has a "Scheduler Pro: Locking" meta box in the editor's sidebar. Just check the box to lock that post's date.
= What happens if I add new posts? =
In Adhesive Mode (default), new posts are added after the existing schedule without modifying already-scheduled posts. In Full Reset Mode, everything is reorganized starting tomorrow.
= Why aren't my posts scheduled at exactly regular intervals? =
That's intentional! Scheduler Pro's ultra-human generator avoids detectable patterns. Hours vary according to activity peaks (9am, 2pm, 5pm) and minutes/seconds are randomized to mimic natural behavior.
= Is WP-Cron reliable for automation? =
WP-Cron depends on your site's traffic. For maximum reliability (99.9%), we strongly recommend setting up a server cron (see the Installation > Advanced Configuration section).
= How many posts can the plugin handle? =
Scheduler Pro can handle thousands of posts thanks to its batching system. Successfully tested with 10,000 scheduled posts.
= Is the plugin compatible with Gutenberg / Elementor / other builders? =
Yes! Scheduler Pro operates at the WordPress database level, so it's compatible with every editor and page builder.
= Can I see the scheduling history? =
Yes, check the "Activity Log" tab to see every scheduler run with timestamp, status and details.
= Does the plugin slow down my site? =
No. The scheduler runs in the background (via cron) and has no impact on front-end performance. The run itself is optimized to use minimal resources.
== Screenshots ==
- Settings Tab - Modern interface with an interactive simulator
- Monitoring Tab - Real-time dashboard with statistics and charts
- Logs Tab - Activity log with filtering and a dark theme
- Locking Meta Box - Manually lock a post's date
- Visual Distribution - 3-month weekly chart plus a 2-month calendar view of publications
- Scheduler Status - Real-time health indicators
== Changelog ==
= 2.6.5 - 2026-09-06 =
🔧 Fix
- Activation notice: the "What's new in this version" list was hardcoded and had not been updated since v2.6.0, so every activation showed features from several versions ago. Replaced with a timeless generic message (also added to the French translation).
= 2.6.4 - 2026-09-06 =
🔧 Fixes
- The queue table (
wp_scheduler_queue) grew forever: rows were written as "pending" but nothing ever transitioned them, and the daily cleanup only removed completed/failed rows. The engine now records its trace rows as "completed" (they are written after the post was actually rescheduled), and the daily cleanup also purges old "pending" rows. - "Test WP-Cron" no longer reschedules your posts: it is now a read-only diagnostic (checks that both cron events are scheduled, warns if DISABLE_WP_CRON blocks automatic triggering, and pings wp-cron.php so any overdue event fires). Use "Run Scheduling Now" for a real run.
- Adhesive mode: the resume anchor now ignores locked posts and excluded categories. Previously, a single locked or excluded post dated far ahead would push ALL new scheduling after it.
- The scheduling loop now stops at 80% of max_execution_time between batches, like it already did for memory: a manual run on a large backlog no longer gets killed mid-batch (which also left the execution lock in place until its own timeout).
- Monitoring: "Next run" now uses the site's timezone instead of the PHP server's.
- Uninstall now fully removes the log directory (the hidden .htaccess file used to survive).
🌍 i18n
- Engine result messages shown in admin notices ("X posts successfully scheduled", etc.) are now translatable too.
= 2.6.3 - 2026-09-05 =
🌍 New Feature
- French translation: the entire admin interface (Settings, Monitoring, Activity Log, and About tabs, the per-post locking meta box, dashboard widgets, activation notices, and the critical-status alert email) is now translatable via the standard WordPress i18n system. English stays the default; the interface switches to French automatically when the site's language is set to French (
fr_FR), no configuration needed beyond WordPress's own language setting.
= 2.6.2 - 2026-09-03 =
✨ New Feature
- Skip weekends: new checkbox in Settings (
sp_skip_weekends, off by default). When enabled, the scheduler never picks a Saturday or Sunday as a publish date - it pushes the candidate date forward to the following Monday. Works identically across the day, week, and month cadences.
= 2.6.1 - 2026-09-03 =
🔧 Fix
- Strategy Simulator: the estimated duration shown for a week/month cadence was too short once the count exceeded the period (e.g. more than 7/week or 30/month), because the simulator's interval calculation didn't cap at 1 post/day like the actual scheduling engine does. The simulator now reuses the engine's own calculation.
= 2.6.0 - 2026-09-03 =
✨ New Features
- Flexible cadence: replaced the flat "posts/day" setting with a unified cadence (count + day/week/month unit). "Day" keeps the exact original behavior; "week"/"month" use a new rolling-average-interval model (at most 1 post/day, with ±20% jitter to avoid a detectable rhythm). Existing installs are migrated automatically with unchanged behavior.
- Category exclusion: posts in selected categories are entirely skipped by the scheduler, in both Adhesive and Full Reset modes. Replaces the old, never-functional
sp_excluded_idsoption. - Preview before running: a new "Preview" button next to "Run Scheduling Now" simulates a full run (identical selection and date logic) and shows the resulting dates in a table, without writing anything.
- Email alerts: an email is sent to the site admin (or a custom address) as soon as the scheduler status turns critical (no run in over 25h), throttled to at most one email every 24h. Checked on every admin page load rather than on the plugin's own cron, so it still fires when WP-Cron itself is what's broken.
- Calendar view: a new 2-month, pure-CSS calendar grid in the Monitoring tab, showing the post count per day with titles on hover, alongside the existing chart.
⚙️ Improvements
- The distribution chart now spans 3 months (grouped by week) instead of 30 daily bars.
= 2.5.0 - 2026-09-03 =
🔧 Critical Fixes
- Scheduling in Adhesive Mode could skip an entire block of posts once the number of remaining posts dropped below a batch's size (pagination was incompatible with a filter that shrinks as batches progress)
- The task queue table (
wp_scheduler_queue) was never created on plugin activation (WordPress hook ordering): fixed by explicitly loading the required classes on activation
🔒 Security
- Added a nonce check on the manual WP-Cron test (CSRF)
- The log file is no longer reachable via direct HTTP access (moved under
uploads/, protected by.htaccess+index.php) - Output consistently escaped in admin messages
⚙️ Reliability
- Anti-concurrency locking rewritten to be atomic (eliminates a race window on concurrent runs)
- The daily cleanup of stale locks now uses a threshold consistent with the main lock's actual timeout
- Daily scheduling (00:30) and cleanup (03:00) now honor the timezone configured in WordPress instead of the PHP server's
- "Full Reset" mode no longer disables itself automatically if processing stopped prematurely (memory): it resumes on the next run
- Locked posts are now excluded directly by the scheduling query (instead of being filtered afterward)
- Fixed a counter that could waste a time slot when a post update failed
- Fixed the distribution chart, which used to exclude day-30 posts published after midnight
- The manual WP-Cron test result is now displayed in the interface (previously computed but never shown)
- Fixed reading
memory_limitwhen expressed in gigabytes (e.g. "1G")
🧹 Cleanup
- Removed a duplicate activation hook (table creation used to be triggered twice)
- Removed the
sp_excluded_idsoption, created but never used by any feature - Completed uninstallation: now also cleans up the daily cleanup cron, the per-post lock meta, all plugin options, and the queue table (previously only partially cleaned up)
- Corrected the documentation: the queue table provides traceability/history, it does not (yet) drive automatic retries
🧱 Architecture
- Split the plugin into modular files by responsibility (
includes/logger.php,includes/memory-guard.php, `inclu
Read the full README on GitHub →