{"id":369047,"date":"2026-09-23T04:35:48","date_gmt":"2026-09-23T04:35:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bulk-post-scheduler-bps\/"},"modified":"2026-09-23T04:35:30","modified_gmt":"2026-09-23T04:35:30","slug":"publipal-bulk-post-scheduler","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/publipal-bulk-post-scheduler\/","author":23562192,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.14","stable_tag":"1.0.14","tested":"7.1.2","requires":"6.5","requires_php":"8.3","requires_plugins":null,"header_name":"PubliPal \u2013 Bulk Schedule Posts, Pages & CPTs","header_author":"PluginHub","header_description":"Schedule posts, pages and supported custom post types in bulk with ordering, day restrictions and randomized time windows.","assets_banners_color":"","last_updated":"2026-09-23 04:35:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pluginhub.com.au\/plugin\/bulk-post-scheduler-plugin\/","header_author_uri":"https:\/\/pluginhub.com.au","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.14":{"tag":"1.0.14","author":"thepluginhub","date":"2026-09-23 04:35:30","revision":3708474}},"upgrade_notice":{"1.0.11":"<p>Back up before updating. Use Pro 1.0.11 or newer for paid features. Existing data is copied to distinctive storage; old integration hooks are retired.<\/p>","1.0.9":"<p>Improved reordering after publication begins, schedule navigation and directory submission checks. Existing posts and published history are preserved. Compatible with Pro 1.0.8.<\/p>","1.0.8":"<p>Improved schedule editing, filtering and settings. Existing posts and published history are preserved.<\/p>","1.0.7":"<p>Free now has no commercial schedule or per-schedule post limits. Compatible PRO adds advanced workflow and publication controls rather than capacity.<\/p>","1.0.6":"<p>Security and compatibility corrections for wizard resets, input handling and Plugin Check. Existing schedules and compatible Pro installations are preserved.<\/p>","1.0.5":"<p>Back up before upgrading combined 1.0.4. Replace Free in place without uninstalling it; install compatible Pro for paid operations. Shared schedules, customer keys and native publishing events are preserved. Both plugins must remain active for paid use.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.14"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Select posts, pages and supported CPTs in the wizard.","2":"Sort and reorder selected posts.","3":"Set intervals, weekdays and randomized time windows.","4":"Review calculated dates.","5":"Manage schedules and authorized unscheduling."}},"plugin_section":[],"plugin_tags":[282191,242017,11916,4928,50254],"plugin_category":[],"plugin_contributors":[282192],"plugin_business_model":[],"class_list":["post-369047","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk-schedule","plugin_tags-content-scheduling","plugin_tags-editorial-calendar","plugin_tags-future-posts","plugin_tags-schedule-posts","plugin_contributors-thepluginhub","plugin_committers-thepluginhub"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/publipal-bulk-post-scheduler.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PubliPal Free includes the complete wizard: select posts, pages or supported custom post types in bulk, sort, reorder, configure intervals and review dates before applying. It has no commercial schedule or per-schedule post limits and supports minutes, hours, days and weeks, weekday restrictions, time-window randomization, metadata\/demand sorting and schedule management. A shared 10,000-item request ceiling protects both editions from accidental oversized operations; it is not a paid entitlement.<\/p>\n\n<p>The separately installed PubliPal Pro add-on adds advanced content filters with select-all-matching, reusable schedule presets, date ranges and recurring exclusions, and opt-in publication or failure notifications. Both plugins remain active for paid use.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Back up your database and plugins. Use WordPress 6.5+, PHP 8.3+ (8.4 recommended), MySQL 8.4+ or MariaDB 10.11+. Single-site only.<\/li>\n<li>Upload the Free ZIP through Plugins &gt; Add New &gt; Upload Plugin, then activate it.<\/li>\n<li>Open PubliPal &gt; Create New Schedule and complete the wizard.<\/li>\n<li>For optional Pro features, separately install and activate compatible Pro, then use PubliPal &gt; Settings as an Administrator to administer the licence.<\/li>\n<\/ol>\n\n<p>For a previous Bulk Post Scheduler or PubliPal 1.0.13 installation, back up the database and deactivate the old Free and Pro plugins without uninstalling them. Install and activate PubliPal Free, then matching PubliPal Pro 1.0.14 or newer if needed. Do not activate old and new copies together. Existing schedules, post dates and native publication events are preserved. Known legacy bps_* and pluginhub_bps_* storage is copied to the publipal_bulk_post_scheduler_* store; originals remain migration backups, not synchronized rollback copies. Recovery after new scheduling changes requires the backup.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20are%20posts%20published%3F\"><h3>How are posts published?<\/h3><\/dt>\n<dd><p>WordPress uses publish_future_post cron events. Low traffic or disabled cron delays publication until cron runs. Pausing a PubliPal schedule prevents further scheduler operations; it does not cancel native publication. Use authorized unscheduling to return an unlocked, unpublished post to draft.<\/p><\/dd>\n<dt id=\"which%20custom%20post%20types%20are%20supported%3F\"><h3>Which custom post types are supported?<\/h3><\/dt>\n<dd><p>Free supports public post types with an admin UI and edit\/publish capabilities, excluding attachments and internal WordPress records. Your account needs the scheduler capability, the type's edit and publish capabilities, and permission to edit each selected post. CPT registration must remain available when scheduling and managing its content.<\/p><\/dd>\n<dt id=\"what%20happens%20without%20pro%20or%20a%20valid%20licence%3F\"><h3>What happens without Pro or a valid licence?<\/h3><\/dt>\n<dd><p>Posts, pages and supported CPTs remain fully usable in Free. Saved extension constraints are retained. Recalculation that needs an unavailable extension stops with an explanation instead of silently dropping its rules. Already scheduled WordPress posts continue publishing. Pro contains its own advanced filters, presets, exclusions and opt-in notifications.<\/p><\/dd>\n<dt id=\"how%20does%20randomization%20work%3F\"><h3>How does randomization work?<\/h3><\/dt>\n<dd><p>A deterministic selection within the chosen time window uses the post, settings and day, so preview and apply agree. Impossible dates, DST gaps, zero intervals and invalid day constraints are rejected. Date searches are bounded to ten years. Schedules use the WordPress site timezone.<\/p><\/dd>\n<dt id=\"does%20free%20send%20data%20externally%3F\"><h3>Does Free send data externally?<\/h3><\/dt>\n<dd><p>Free contains no licence client, external executable updater or Pro installer and makes no service requests. WordPress may perform its own directory update checks. Pro has its own service disclosure and independent signed updater.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>Deactivation retains data and native publishing events. Free retains data by default. Explicit cleanup removes shared schedules\/settings only when Pro is absent; it never deletes posts or customer keys. Pro uninstall never removes shared data or releases a customer licence remotely.<\/p><\/dd>\n<dt id=\"where%20is%20the%20source%20and%20how%20is%20it%20built%3F\"><h3>Where is the source and how is it built?<\/h3><\/dt>\n<dd><p>All distributed PHP, JavaScript and CSS are readable source. There is no transpilation or minification build. JavaScript uses WordPress-provided jQuery and jQuery UI. The package includes GPL-compatible authored source; private repository access is not required to modify it.<\/p><\/dd>\n<dt id=\"where%20is%20the%20guide%3F\"><h3>Where is the guide?<\/h3><\/dt>\n<dd><p><a href=\"https:\/\/pluginhub.com.au\/docs\/bulk-post-scheduler\/\">PubliPal documentation<\/a>. This readme describes the Free plugin included in this download.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Align active Free APIs, hooks, interface identifiers and storage with the assigned publipal-bulk-post-scheduler slug while keeping the display name.<\/li>\n<li>Copy older schedule data and settings into the new storage without deleting the originals; coordinate the matching Pro update.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Coordinate the final release after archive browser testing; Pro licence settings now use the add-on's own entitlement service. The unpublished 1.0.12 candidate is superseded.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Coordinate the PubliPal package identity and preserve existing data.<\/li>\n<li>Include supported custom post types in Free with native post-type permissions.<\/li>\n<li>Remove disabled paid workflow previews and improve unavailable-extension messages.<\/li>\n<li>Validate search input shapes and preserve signed-update package protections.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Rename the directory display name to Bulk Post Scheduler by PluginHub.<\/li>\n<li>Enqueue wizard scripts through WordPress and sanitize extension inputs before callbacks.<\/li>\n<li>Adopt distinctive identifiers and copy prior schedule data without deleting its originals.<\/li>\n<li>Remove Free update interception and simplify the Pro submenu.<\/li>\n<li>Require the matching Pro 1.0.11 add-on for paid features.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Use red Delete buttons in active and completed schedule lists, including hover and keyboard focus states.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Keep published and locked posts fixed when reordering a schedule, and recalculate the remaining queue from its earliest available future slot.<\/li>\n<li>Validate the complete order and dates before saving; report interrupted writes so retained schedules can be refreshed and retried.<\/li>\n<li>Improve schedule actions, sidebar navigation, tooltip wrapping and editor spacing.<\/li>\n<li>Clarify translator and guarded-input annotations and clean up the distribution readme and package.<\/li>\n<li>Retain compatibility with the separately installed Bulk Post Scheduler Pro 1.0.8 add-on.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Add schedule editing from the schedule list and detail page while preserving post membership, order and published history.<\/li>\n<li>Improve settings layout, upgrade\/license navigation and customer-facing explanations.<\/li>\n<li>Preserve comparison operators and invalid input through the advanced-filter search endpoint.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Remove commercial schedule and per-schedule post limits from Free; retain one shared 10,000-item request safety guard in both editions.<\/li>\n<li>Add restrained, price-free PRO feature discovery for advanced filters, presets, expanded exclusions, custom post types and notifications.<\/li>\n<li>Add extension contracts for filtered selection, reusable schedule rules and trusted publication notifications.<\/li>\n<li>Preserve extension settings and publication history when PRO is absent, inactive or temporarily unavailable.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Protect wizard resets with an explicit capability-checked POST and dedicated nonce; resume saved progress on navigation.<\/li>\n<li>Prepare complete database queries and validate AJAX payload shapes before field sanitization.<\/li>\n<li>Add longer public API names while preserving existing helpers, hooks and Pro callback ordering.<\/li>\n<li>Persist publication history on native publication transitions; keep detail rendering read-only.<\/li>\n<li>Resolve Plugin Check errors and document necessary compatibility and database exceptions.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Separate Free shared scheduling from the optional Pro add-on while preserving existing data and customer keys.<\/li>\n<li>Require WordPress 6.5, PHP 8.3, MySQL 8.4 or MariaDB 10.11; reject unsupported activation and upgrades.<\/li>\n<li>Harden per-post authorization, bounded date calculation and partial-failure recovery.<\/li>\n<li>Preserve exact comma\/newline bulk selection, add live drag insertion preview, and reconcile empty\/completed schedules automatically.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fix strict native-update package identity validation for the plugin's declared display name.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Move licence validation, downloads, product links and documentation to PluginHub.<\/li>\n<li>Add signed native WordPress updates from updates.pluginhub.com.au.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Use one gated package for both Free and Premium distribution.<\/li>\n<li>Add automatic daily license revalidation with a seven-day outage grace period.<\/li>\n<li>Release the one-site activation remotely when a license is deactivated.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: version constant now matches the plugin header.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Multi-step wizard for bulk schedule creation.<\/li>\n<li>Drag-and-drop post reordering.<\/li>\n<li>Flexible interval rules \u2014 minutes, hours, days, weeks.<\/li>\n<li>Weekday-only and specific-day restrictions.<\/li>\n<li>Deterministic date updates after changing post order.<\/li>\n<li>Extensible demand source architecture.<\/li>\n<li>Full schedule management \u2014 pause, activate, delete.<\/li>\n<\/ul>","raw_excerpt":"Schedule posts, pages and supported custom post types in bulk with sorting, day restrictions, randomized time windows and native WordPress publishing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=369047"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/thepluginhub"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369047"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369047"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369047"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369047"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369047"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}