Simple Custom Post Order · Version history
Simple Custom Post Order changelog and version history
- Latest version
- 2.8.12
- Nov 3, 2026 (6 days ago)
- Releases
- 53
- since 2013
- In the last year
- 20
- about one every 16 days
- Tested up to
- WordPress 7.1.4
- PHP 7.4 or later
Releases each year
- 20133 releases
- 20141 release
- 20151 release
- 20188 releases
- 20197 releases
- 20205 releases
- 20213 releases
- 20231 release
- 20243 releases
- 20251 release
- 202620 releases
202620 releases
Simple Custom Post Order 2.8.12Latest
- Fixed WooCommerce product category drags that showed “Order saved” but snapped back on reload, or reported “The order changed in another window”. WooCommerce’s own category sorter (the ☰ handle) ran alongside ours; it is now switched off wherever this plugin orders the list.
- Fixed the WooCommerce Product Categories widget set to “Category order” showing an old order. It now follows the custom order.
- Fixed WooCommerce category queries that ask only for IDs or a limited number of categories ignoring the custom order.
- When a theme or another plugin sorts an admin list itself (for example a pre_get_posts hook forcing date order), drag and drop is turned off on that list with a notice explaining why, instead of every drag failing with “The order changed in another window or request”.
- Fewer false “The order changed in another window” errors: saves now compare each row’s saved value instead of assuming the list is shown in numeric order. Real changes made in another window are still caught.
- MyISAM and MariaDB Aria sites can reorder again, without converting tables, using a single guarded database update. InnoDB keeps full transactions. On MyISAM/Aria a server crash mid-save cannot be rolled back; the plugin reports such a save as unconfirmed and asks you to reload.
- Enabled post types now support Page Attributes, so the Query Loop block offers “Ascending by order” for custom post types too. Use the scpo_add_order_support filter to opt out.
- Added a Simple Custom Post Order section to Tools > Site Health > Info (table engines, object cache, database drop-in) to help with support requests.
Simple Custom Post Order 2.8.11
- Bug fixes
- Fixed “Safe reordering requires an InnoDB database table” blocking every reorder on sites whose tables are InnoDB. 2.8.10 treated an unanswered storage-engine lookup as “not InnoDB”; the plugin now also asks via SHOW TABLE STATUS and only refuses when the database positively reports a non-transacti…
- Fixed drags in hierarchical taxonomies (Categories, product categories, …) being refused with “The order changed in another window or request” even after reloading. Hierarchical taxonomies are now numbered in the tree order the list shows, as pages have been since 2.8.9, and a term added with the q…
Simple Custom Post Order 2.8.10
- Safer saves and recovery
- Fixed failed order reads and writes reporting success. Drag and numeric saves now roll back all batches when a database write fails, preserving a caller’s existing transaction with savepoints.
- Added stale-order checks for Modern and Classic drags and the Order column. Conflicting edits are rejected instead of overwriting the order; the Modern engine offers a Reload list button. Retrying an already-saved drag remains safe.
- Added a Modern-engine warning before leaving with pending or failed saves. The warning clears after saving succeeds, and newly added rows refresh the saved list baseline.
- Improved server error messages and retry handling. The Order column now treats unsuccessful HTTP responses as failures, and Classic drags are disabled while saving.
- Fixed failed resets disabling sorting despite database errors; a settings failure after a reset is now reported separately.
- Developers and compatibility
- Added the scpo_ignore_custom_order query argument for WP_Query and get_posts() to bypass automatic post ordering without changing saved values or existing defaults.
- Safe reordering now requires InnoDB for the relevant posts/terms tables. Unsupported storage returns an explanatory error; no automatic table conversion occurs.
- Added failure-injection tests, real database transaction tests, browser recovery checks, PHP compatibility CI, and a local install/test runner with verified restoration of ordering and settings.
- Updated translation strings and release validation. WordPress 6.2+ and PHP 7.4+ remain required; no paid service or subscription is needed.
Simple Custom Post Order 2.8.9
- Bug fixes
- Fixed dragging on the Drafts, Pending or search-results view of a list scrambling your order. Those views are sorted by date or relevance, and a drag saved every row on the screen in that order. Drag-and-drop is now only offered on views that show your custom order.
- Fixed wp_get_recent_posts() — used by many “recent posts” widgets and blocks — returning the oldest posts of a sorted post type. A descending sort on a date column is now respected by get_posts() too.
- Fixed the Tags admin list showing the wrong tags on each page once there were more than fit on one page, so dragging reordered the wrong set of tags.
- Fixed tag clouds and the editor’s “most used tags” showing arbitrary tags: orderby => count (and other meaningful term orders such as include, slug__in and meta values) is now respected. WooCommerce product categories keep following your custom order.
- Fixed dragging on page 2 or later of a long page tree moving pages you never touched onto another page of the list. Pages are now numbered in the order the tree is shown, so a save only ever affects the rows on screen.
- Fixed keyboard reordering in page and category trees: a page now moves past whole sibling branches, never lands inside another branch or above its own parent, and Escape puts everything back exactly as it was. Dragging with the mouse no longer picks up rows that are not really its children.
- Fixed previous/next links skipping a post that shares an order number with the current one (for example a copy made by a duplicate-post plugin).
- Fixed searches and extra queries on search results pages being forced into the custom order, and a “called incorrectly” notice for is_search() when queries ran before the main one.
- Fixed a save with Quick Edit open sending the edited post twice, which misplaced it. On the Classic engine an open Bulk Edit row made the whole save fail silently.
- Fixed drag-and-drop reporting a failure when another plugin printed a notice into the reply (the Order column already coped with this since 2.8.6).
- Fixed enabling Pages reshuffling pages that share a Page Attributes order value: ties are now settled alphabetically, as WordPress showed them.
- Fixed saving the settings — or resetting one post type — renumbering every other sorted type.
- Fixed Reset Order turning the drag handle off on older installs, leaving stale numbers behind on sites with a persistent object cache, and accepting post types the form does not offer.
- Fixed taxonomies registered with capital letters not staying enabled after saving the settings.
- Fixed term order not updating in get_the_terms() (used by most themes to list a post’s categories and tags) on sites with a persistent object cache.
- Fixed network super admins being locked out of reordering when “Who can reorder” is restricted to certain roles.
- Fixed long page trees being cut off when saved (PHP’s max_input_vars limit).
- Fixed the site-wide setup notice being shown to, and dismissable by, users who cannot change the plugin’s settings; it also no longer shows once only taxonomies are enabled.
- Fixed the Reset Order button and the setup notice’s dismiss button failing when the admin is reached through a proxy, another port or http/https mismatch.
- The term_order column is now only recorded as installed once it really exists. If the database refused to add it, term queries keep working unsorted instead of failing.
- Improvements
- A failed save now keeps its message on screen with a Retry button, and requests time out after 20 seconds instead of hanging.
- The Order column updates its numbers after a drag, no longer sends the same position twice, and rejects positions such as 0 or 2.5 instead of silently misreading them.
- Keyboard users hear how to use the drag handle before grabbing a row, and are told when a row cannot move any further.
- Right-to-left languages, Windows High Contrast mode and the admin colour scheme are now supported by the drag handle and save message; the drag animation respects “reduce motion”.
- Typing in the Order box or other fields inside a row no longer starts a drag.
- Much faster on large sites: typing a position in the Order column and saving a drag now use a few batched queries that only touch rows whose number changes, and tidying up the order after new posts are published no longer flushes the entire object cache.
- Uninstalling on multisite now handles large networks, and no longer removes a term_order column that another plugin created.
- The plugin header now declares “Requires at least: 6.2”, so WordPress enforces the minimum version.
Simple Custom Post Order 2.8.8
- Bug fixes
- Fixed the plugin overwriting an order your site already had. Ticking a post type in Settings re-sorted it from scratch — pages alphabetically, everything else newest-first — throwing away the order already stored against your content. For pages that is WordPress’s own Page Attributes → Order field,…
- Fixed two items sharing the same order number coming out in a different order depending on whether you had just saved the settings screen or simply opened the list. Both now settle the tie the same way.
- Fixed dragging a parent page leaving its child pages behind until the page was refreshed. The saved order was always correct — children were re-nested under their parent as soon as the list reloaded — but the screen looked wrong in the meantime. Children now move with their parent as you drag. Repo…
- Note: full parent/child ordering (keeping a drag within its own level) is still to come.
Simple Custom Post Order 2.8.7
- Bug fixes
- Fixed drag-and-drop appearing to do nothing when two or more items shared the same order number. The reorder saved successfully but the items never moved, and because they stayed tied, which one came first was a toss-up on the front end. Reported by @literayz.
- Fixed duplicate order numbers never getting cleaned up. The plugin’s tidy-up step checked the count, highest and lowest number, so a list with a duplicate and a matching gap (1, 2, 2, 4, 5) looked correct and was skipped every time. Duplicates are now detected and renumbered.
- Fixed items in a custom status (added by editorial-workflow and similar plugins) being left out of ordering. They still appeared in the list and could still be dragged, but were skipped when the plugin numbered everything else — which is a common way duplicate numbers appeared in the first place. O…
- Fixed leftover settings after uninstalling. Three options survived removal and were silently restored if the plugin was installed again later. Everything the plugin creates is now removed. Reported by @jamieburchell.
- Fixed the plugin’s review notice never being displayed, due to the way it was hooked into WordPress. Also spotted by @jamieburchell.
- Housekeeping
- Marked compatible with WordPress 7.1. The previous release’s compatibility line was edited directly in the published 2.8.6 files rather than shipped as an update, which made security scanners such as Wordfence report the plugin as a Modified Plugin File on sites that had already installed 2.8.6. No…
- The review notice no longer loads jQuery, no longer appears on every site at once after this update (sites that already dismissed it stay dismissed), and no longer risks garbled text in translated languages.
Simple Custom Post Order 2.8.6
- Bug fixes
- Fixed “Couldn’t update the order — please try again” when typing a position into the Order column. The column had no recovery for an expired security token, so leaving a post list open for a while (or running a security plugin that shortens token lifetime) made every save fail until the page was re…
- Fixed the Order column reporting a failure when the order had actually been saved. If another plugin printed a stray notice or warning before the response, the reply could not be read and the save looked like it had failed. Such output is now tolerated.
- Fixed the Order column giving up on a brief network hiccup — it now retries once before reporting a problem.
- The Order column no longer shows an editable box on items you are not allowed to reorder. The box is only offered where the save can actually succeed; elsewhere the position is shown as plain text. This mainly affects custom post types registered with their own capabilities, where the box previousl…
- Improvements
- The Order column now reports why a save failed — an expired session, a permissions problem, an item that can’t be ordered, or a connection problem — instead of showing the same generic message for all of them.
Simple Custom Post Order 2.5.11
- Deactivated custom sort order on search results pages
Simple Custom Post Order 2.8.5
- Bug fixes
- Fixed stale and duplicated order numbers on sites running a persistent object cache (Redis, Memcached, etc.). Creating a post and tidying up the order both wrote straight to the database without telling WordPress to refresh its cached copies, so admin lists kept showing the old numbers until the ca…
- Fixed taxonomy terms coming back in the wrong order on the front end from that same cause. Unlike posts, term order is applied in PHP using each term’s stored order value — and that value comes from the cache, so a stale entry produced genuinely wrong ordering, not just wrong-looking numbers in the…
- Fixed reordering terms clearing the wrong cache entries on sites where a term’s ID and its internal taxonomy ID have drifted apart (common on older or heavily migrated sites).
- Fixed the order not being tidied up in one edge case where the numbering looked correct but started below 1.
- Performance
- Publishing is now much faster on large sites. With “New items” set to Top (the default), creating a single post rewrote the order value of every other post of that type — thousands of rows on a big site, on every publish. New items are now placed with a single-row update. Where they land is unchang…
- Enabling a post type or taxonomy in Settings now numbers the existing items in one batched query instead of one query per item.
Simple Custom Post Order 2.8.4
- Performance
- Fixed very slow WordPress admin on sites with many posts. The plugin’s order-normalization routine (refresh()) ran on every admin page — Dashboard, Plugins, Tools, Settings — even those that never display a sortable list. On large sites it re-numbered thousands of rows one query at a time, adding t…
Simple Custom Post Order 2.8.3
- Security
- Hardened the drag-and-drop reorder AJAX endpoints with per-object permission checks. Previously any signed-in user who could reach the reorder actions (by default anyone able to edit posts) could submit arbitrary post or term IDs and change their stored order — including posts, pages, or terms they…
- Bug fixes
- Fixed the manual post order being ignored on the admin Posts list after using the “All dates” or category dropdown filters. Those filters submit an empty search field, which WordPress counts as a search, and the plugin was skipping its custom order for any search. The manual order now applies while…
Simple Custom Post Order 2.8.2
- Bug fixes
- Fixed newly created posts and items landing at the bottom of the manual order on sites upgraded from before 2.8.0 — which made the latest post appear at the bottom of admin lists instead of the top. The 2.8.0 “new-item placement” feature shipped defaulting to bottom, which silently reversed the lon…
Simple Custom Post Order 2.8.1
- Improvements
- Added a scpo_reverse_adjacent_posts filter to reverse the direction of the previous/next post navigation links for manually-ordered posts and custom post types. The 2.7.2 fix (#146) made “previous” the item before the current one in the arranged order and “next” the item after — correct for sequent…
Simple Custom Post Order 2.8.0
- New features
- Choose where new items are placed — a setting to add newly created posts/pages/items to the bottom or top of the manual order (the default was changed to top in 2.8.2). Props @mplusb (#45).
- Optional “Order” number column — turn on an editable position column on enabled (non-hierarchical) post-type lists to type an item’s exact order, including jumping it across paginated pages. Hidden by default and toggleable via Screen Options. (Hierarchical types like Pages are handled separately i…
- Role-based reordering — restrict drag-and-drop reordering to specific roles in Settings > SCPOrder, with a new scpo_capability filter for developers. Props @mplusb (#95, #133).
Simple Custom Post Order 2.7.3
- Bug fixes
- Fixed Quick Edit and Bulk Edit fields (text inputs, dropdowns) not responding to a left mouse click on post/page list screens when the Modern (SortableJS) sorting engine was active. The drag engine was excluding those inline-edit rows from sorting but still suppressing the browser’s default click b…
Simple Custom Post Order 2.7.2
- Bug fixes
- Fixed previous/next post navigation links pointing to the wrong adjacent post (often reversed) for manually-ordered posts and custom post types. The adjacent-post queries now walk menu_order correctly and account for the date/ID tiebreaker WordPress adds to the query. Props @beatricelucaci (#146).
Simple Custom Post Order 2.7.1
- Bug fixes
- Fixed post order being scrambled on MariaDB / MySQL 8 when menu_order is re-normalized after gaps appear (e.g. after deleting an item). The gap-compacting step relied on a MySQL user-variable ranking whose evaluation order is undefined on those databases; re-numbering is now done deterministically…
- Term queries that request a specific order with orderby=include are now respected instead of being overridden by the custom term order. Props @glebkema (#67 / #66).
- Improvements
- Custom term ordering now applies when any queried taxonomy is sortable (previously only the first taxonomy in a multi-taxonomy query was checked) and keeps the caller’s orderby as a fallback tiebreaker. Props @goaround (#104).
Simple Custom Post Order 2.7.0
- Modern Drag-and-Drop Engine (SortableJS)
- Reordering now uses a fast, dependency-free vanilla JavaScript engine (no jQuery UI)
- Smoother drag animation and a cleaner floating row while sorting
- Touch support — press, hold, and drag to reorder on phones and tablets
- Full keyboard accessibility — tab to a row, press Space to grab, arrow keys (and Home/End) to move, Space to drop, Escape to cancel
- Screen-reader announcements for every grab, move, and drop via an ARIA live region
- Visible save feedback — a “Saving… / Order saved” status appears as you reorder
- Reliability
- Fixed reordering silently failing to save in some environments — the AJAX request is now always same-origin (root-relative), so saving works correctly behind reverse proxies, load balancers, non-standard ports, and HTTP/HTTPS or domain mismatches
- Expired security nonce now refreshes automatically and retries the save, so long-open edit screens (or sites with a shortened nonce lifetime) keep saving without a reload
- Rapid successive drags are coalesced into a single request (the final order always wins), with an automatic retry on transient network errors
- New Settings (Settings > SCPOrder)
- Drag & Drop Engine — choose “Modern” (SortableJS, default) or “Classic” (the legacy jQuery UI sorter)
- Drag handle — show a grip icon on row hover; shown by default, can be turned off, and never affects accessibility (keyboard users can always reveal it)
- Accessibility
- Respects the prefers-reduced-motion setting
- Proper ARIA labels, roles, and focus handling on the drag handle
- Performance & Build
- Ships minified admin assets; unminified sources load automatically when SCRIPT_DEBUG is enabled
- Removed unused/dead JavaScript
- Developer
- New filter scpo_use_sortablejs — force the drag engine on/off in code (overrides the setting)
- The classic jQuery UI Sortable path remains available as an opt-out fallback
- Fully backward compatible — existing settings, hooks (scp_update_menu_order, scp_update_menu_order_tags, scpo_post_types_args), the global $scporder, and the scporder_options structure are unchanged (two optional keys added: engine, show_handle)
Simple Custom Post Order 2.6.1
- Compatibility
- Tested and confirmed compatible with WordPress 7.0
- Updated “Tested up to” version to WordPress 7.0
- Verified PHP 8.3 and 8.4 compatibility (no deprecated APIs in use)
- Maintenance release — no functional changes
Simple Custom Post Order 2.6.0
- Settings Page Overhaul
- Complete rewrite using WordPress Settings API for native admin experience
- Replaced custom toggle switches with standard WordPress checkboxes
- Removed 100+ lines of custom CSS – now uses native WordPress admin styles
- Improved accessibility with proper ARIA roles and screen reader text
- Settings now integrate seamlessly with WordPress core admin UI
- Added “Settings” link to plugin action links on the Plugins page
- Security Enhancements
- Fixed potential SQL injection vulnerabilities with prepared statements
- Added proper output escaping (XSS prevention) throughout the plugin
- Improved input sanitization for all user data
- Added nonce escaping in JavaScript contexts
- Performance Improvements
- Replaced blanket cache flushing with targeted cache invalidation
- Only affected posts/terms have their cache cleared after reordering
- Reduced unnecessary database operations
- PHP 8.4 Compatibility
- Added type declarations to all class methods
- Fixed null safety issues for PHP 8.1+
- Added explicit property declarations
- Minimum PHP version now 7.4
- Code Quality
- Converted to modern PHP syntax (short arrays, spaceship operator)
- Replaced loose comparisons with strict comparisons
- Removed legacy French comments and TODO markers
- Fixed code formatting issues
- Improved AJAX responses with proper JSON structure
- Bug Fixes
- Fixed potential fatal error when get_current_screen() returns null
- Fixed reset order JavaScript to handle JSON responses correctly
20251 release
Simple Custom Post Order 2.5.10
- Fix Notice: _load_textdomain_just_in_time
20243 releases
Simple Custom Post Order 2.5.9
- Allow editors to change posts order
Simple Custom Post Order 2.5.8
- Security update
Simple Custom Post Order 2.5.7
- Security update fixing multiple issues
- Code cleanup for better performance
20231 release
Simple Custom Post Order 2.5.6
- Changed: Revert to 2.5.4
20213 releases
Simple Custom Post Order 2.5.5
Simple Custom Post Order 2.5.4
Simple Custom Post Order 2.5.3
20205 releases
Simple Custom Post Order 2.5.2
Simple Custom Post Order 2.5.1
Simple Custom Post Order 2.5.0
Simple Custom Post Order 2.4.9
Simple Custom Post Order 2.4.8
20197 releases
Simple Custom Post Order 2.4.7
Simple Custom Post Order 2.4.6
Simple Custom Post Order 2.4.5
Simple Custom Post Order 2.4.4
Simple Custom Post Order 2.4.3
Simple Custom Post Order 2.4.2
Simple Custom Post Order 2.4.1
20188 releases
Simple Custom Post Order 2.4.0
Simple Custom Post Order 2.3.9
Simple Custom Post Order 2.3.8
Simple Custom Post Order 2.3.7
Simple Custom Post Order 2.3.6
Simple Custom Post Order 2.3.5
Simple Custom Post Order 2.3.4
Simple Custom Post Order 2.3.3
20151 release
Simple Custom Post Order 2.2
20141 release
Simple Custom Post Order 2.1
20133 releases
Simple Custom Post Order 2.0
Simple Custom Post Order 1.5
Simple Custom Post Order 1.0
Questions about Simple Custom Post Order’s releases
What is the latest version of Simple Custom Post Order?
2.8.12, released on Nov 3, 2026 (6 days ago). It’s tested up to WordPress 7.1.4 and needs PHP 7.4 or later.
How often is Simple Custom Post Order updated?
20 releases in the last year, about one every 16 days. Its first release on WordPress.org dates from July 2013.
Know when your rivals ship
Track your plugin and its rivals: TrackWP sees each new release in the nightly snapshot and alerts you, with what it did to their rank.
Start freeRelease dates come from the day each version’s folder was made in Simple Custom Post Order’s WordPress.org SVN repository; the notes from its readme’s changelog, as its authors wrote it.