The Intuitive Custom Post Order plugin lets you drag and drop posts in the admin list table to set a custom sort order. The order is saved to the menu_order column. If the drag-and-drop order looks correct in the dashboard but the front end still shows a different sequence, the most common culprit is a WP_Query argument that prevents the plugin from doing its job.
Problem: The Intuitive Custom Post Order plugin reorders posts correctly in the admin drag-and-drop interface, but a WP_Query loop on the front end ignores the custom order and falls back to date sorting.
Solution: Remove 'fields' => 'ids' from the WP_Query arguments — the plugin hooks into the query to inject its ordering, but only when the query returns full post objects. Fetching only IDs bypasses the plugin's filter entirely.
The problematic argument is 'fields' => 'ids':
<?php
$args = [
'post_type' => 'my_cpt',
'posts_per_page' => -1,
'fields' => 'ids', // returns only IDs — breaks Intuitive CPO ordering
];
When fields is set to 'ids', WordPress returns a simplified result set that bypasses the plugin's filter on the query, so the custom menu_order is never applied. Switching to 'fields' => 'all' restores the full post objects and lets the plugin sort them correctly:
<?php
$args = [
'post_type' => 'my_cpt',
'posts_per_page' => -1,
'fields' => 'all', // full post objects — Intuitive CPO ordering works
];
If you need only the IDs for performance reasons but still want the custom order preserved, fetch full objects first and then extract the IDs with wp_list_pluck():
<?php
$query = new WP_Query( [
'post_type' => 'my_cpt',
'posts_per_page' => -1,
'fields' => 'all',
] );
$ordered_ids = wp_list_pluck( $query->posts, 'ID' );
NOTE: For the plugin's order to take effect, you must also omit an explicit orderby argument (or set it to 'menu_order'). Adding 'orderby' => 'date' or any other value will override the plugin's custom order regardless of the fields setting.