

Plugin settings screen.
Presswell Publication Schedule adds precise, automated control over how often new posts are published, and is the perfect solution for ensuring a consistent editorial calendar. Configure the days and times when posts should be published, and new posts will be automatically scheduled for the next available time slot.
Features
Filters
pwps_manage_caps – Filter the capability list used to determine who can use schedule override and “Publish now” actions.pwps_schedule – Filter the weekly schedule used to find slots: an array keyed by day of the week (0 for Sunday to 6 for Saturday), each holding a list of 24-hour times such as 14:30. A value that isn’t an array is ignored.pwps_filter_settings – Filter settings from the settings page before they are saved. A value that isn’t an array is ignored, and the unfiltered settings are saved.pwps_next_slot – Change the slot a post is given: receives the next open slot (Y-m-d H:i:s in the site’s timezone, or empty when none is open), the post type, and the post ID (0 for the next open time shown in the editor). Return a future date and time, or an empty string for no slot, which is handled as when every slot is taken; other values are ignored.pwps_slot_lock_wait – Seconds a publish waits for another in-progress publish before choosing a slot (default 5).pwps_debug_log_filename – Filename of the private debug log.pwps_debug_log_max_bytes – Size at which the debug log rotates (default 5 MB).pwps_status_rows – Add or change rows in the Debug tab’s status table. Each row is an array with label, value, and status (ok, warning, or empty); rows without a string label and value are skipped.pwps_should_schedule – Return true to schedule posts published by other sources. By default only posts published by a person in wp-admin (the block and classic editors, Quick Edit and Bulk Edit) are scheduled; imports, WP-CLI, REST clients using application passwords, and other plugins keep the date they set.Actions
pwps_settings_before_fields – Fires before the fields on the Settings tab, inside its form table; output table rows.pwps_settings_after_fields – Fires after the fields on the Settings tab, inside its form table; output table rows.pwps_post_scheduled – Fires after a post is given a slot, once it’s saved with its date. Receives the post ID, the slot (Y-m-d H:i:s in the site’s timezone), and the post type.pwps_published_now – Fires after “Publish now” publishes a post. Receives the post ID.pwps_missed_published – Fires after the Missed Schedules check publishes overdue posts, once per check. Receives an array of post IDs.Functions
pwps_get_next_slot( $post_type ) – The next open slot for a scheduled post type (Y-m-d H:i:s in the site’s timezone), or an empty string. Looking it up doesn’t reserve it.pwps_get_schedule() – The weekly schedule the plugin uses, after the pwps_schedule filter.
pwps_manage_caps receives an array of capabilities. Access is granted when the current user has at least one capability in the array.
Example:
add_filter( 'pwps_manage_caps', function( $caps ) {
$caps[] = 'manage_publication_schedule';
return array_unique( $caps );
} );