Manual post ordering is a critical feature for WordPress users who need complete control over the display order of their content. Whether you’re managing a blog, portfolio, or custom post types (CPTs), the ability to manually reorder posts can significantly enhance user experience and content prioritization. In this comprehensive guide, we will show you how to enable manual ordering for posts and custom post types using Advanced Custom Fields (ACF), Simple Page Ordering, and Elementor.
Why Manual Post Ordering Matters
By default, WordPress orders posts by date in descending order. While this works for time-sensitive content like news, it’s not ideal for curated lists, featured items, or structured presentations where the post order should reflect a specific logic or narrative. Manual ordering gives content managers and designers the freedom to :
- Showcase featured content at the top.
- Highlight products or services in a specific sequence.
- Organize testimonials, portfolios, or team member bios in a meaningful way.
Step 1: Create Custom Post Types with ACF (If Needed)
If you’re using default posts, you can skip this step. But if your site uses custom post types created with ACF or manually registered via code, ensure the post type supports manual ordering.
Example Code to Register a Custom Post Type:
function register_custom_post_type() {
register_post_type('projects', array(
'labels' => array(
'name' => __('Projects'),
'singular_name' => __('Project')
),
'public' => true,
'hierarchical' => false,
'supports' => array('title', 'editor', 'thumbnail', 'page-attributes'),
'menu_position' => 5,
'rewrite' => array('slug' => 'projects'),
'show_in_rest' => true,
));
}
add_action('init', 'register_custom_post_type');
The key part here is ‘supports’ => array(‘page-attributes’), which enables the menu_order field used for manual sorting.
Step 2: Install the Simple Page Ordering Plugin
Simple Page Ordering is a lightweight plugin that allows you to reorder posts and custom post types via drag-and-drop in the WordPress admin.
To install:
- Go to Plugins > Add New in your WordPress dashboard.
- Search for “Simple Page Ordering.”
- Click Install and Activate.
Once installed, go to the post list view of your post type and simply drag the posts into the desired order.
Step 3: Ensure Proper Order is Reflected on the Frontend (Elementor Users)
Here’s where many users run into issues: Elementor doesn’t use the menu_order by default in its queries. Even if you’ve reordered the posts in the backend, the changes won’t show on the frontend unless Elementor is configured to respect that order.
Option 1: Use Elementor Query ID with Custom Filter
- Open the Elementor Editor for the page containing the post list.
- Select the Posts or Loop Grid widget.
- Scroll to the Query section.
- Look for Custom Query ID and enter something like custom_order.
Now, add this code snippet to your theme’s functions.php file or Use Code Snipet Plugin:
add_action(‘elementor/query/custom_order’, function($query) {
$query->set(‘orderby’, ‘menu_order’);
$query->set(‘order’, ‘ASC’);
$query->set(‘posts_per_page’, -1);
});
This tells Elementor to order the posts using the menu_order set via Simple Page Ordering.
Option 2: Modify Theme Templates (If Not Using Elementor)
If you are using a standard WP_Query, update it like this:
$args = array(
‘post_type’ => ‘projects’,
‘posts_per_page’ => -1,
‘orderby’ => ‘menu_order’,
‘order’ => ‘ASC’,
);
$query = new WP_Query($args);
This ensures posts are fetched based on your custom order.
Step 4: Automatically Place New Posts First
If you want newly created posts to automatically appear first without any drag-and-drop reordering, then skip menu_order and just sort by date:
$args = array(
‘post_type’ => ‘projects’,
‘posts_per_page’ => -1,
‘orderby’ => ‘date’,
‘order’ => ‘DESC’,
);
But keep in mind, this disables manual ordering.
Bonus: Show Menu Order in the Admin Table
To make manual ordering easier to manage, you can display the menu_order in your admin columns:
add_filter(‘manage_edit-projects_columns’, function($columns) {
$columns[‘order’] = ‘Order’;
return $columns;
});
add_action(‘manage_projects_posts_custom_column’, function($column, $post_id) {
if ($column == ‘order’) {
echo get_post_field(‘menu_order’, $post_id);
}
}, 10, 2);
Troubleshooting Tips
- Drag-and-drop not working? Make sure your post type supports page-attributes.
- Frontend order not reflecting? Double-check your Elementor query settings or WP_Query parameters.
- Want to sort by ACF field instead? Use ‘meta_key’ => ‘your_acf_field_name’ and ‘orderby’ => ‘meta_value_num’ in your query.
Conclusion
Manual post ordering is an often-overlooked yet powerful feature that can greatly improve your content presentation in WordPress. With the combination of Simple Page Ordering, ACF custom post types, and Elementor’s flexible custom queries, you have full control over how your posts appear.
Whether you’re showcasing projects, team members, services, or blog posts, these tools empower you to tailor the frontend experience exactly the way you envision.
If you’re a developer or designer building custom websites, implementing manual post ordering is a must-have skill in your WordPress toolkit. And now, with Elementor integration, you can visually create stunning and structured content layouts with complete backend control.