Back to Community

How to Control Which Post Types Appear in the Post Types Order Interface

21 threads Sep 16, 2025 PluginPost types order

Content

Many WordPress administrators use the Post Types Order plugin to easily manage the sequence of their content through a drag-and-drop interface. A common point of confusion, however, is that the plugin's "Re-Order" submenu appears for all registered post types by default. This can be problematic if you have post types, like sensitive pages or forms, that you don't want users to be able to rearrange.

Why This Happens

The Post Types Order plugin is designed to be broadly compatible out of the box. To achieve this, it automatically adds its ordering functionality to every public post type it detects. This includes standard posts, pages, and any custom post types created by your theme or other plugins. While this is convenient for setup, it doesn't provide granular control over where the interface appears.

Available Solutions

Based on community discussions and official responses, here are the primary ways to manage this behavior.

1. Using the Advanced Post Types Order Plugin

The most straightforward solution is to use the Advanced Post Types Order plugin, which is the premium version of the free tool. The 'Post Types Order' team has confirmed that the ability to enable or disable the re-order submenu on a per-post-type basis is a feature included in this advanced version. This provides a user-friendly settings interface to control visibility without writing any code.

2. Custom Code Snippet (For Developers)

For those comfortable with code, a community member proposed a custom function to achieve this control. This involves adding a filter to the plugin's options. Important: Always test code snippets on a staging site before using them on a live website, and ensure you have full backups.

The following example demonstrates the concept of creating a settings field to choose post types. Implementation will vary based on your specific setup and requirements.

function reorder_certain_post_types($checked, $echo=true) {
    $post_types = get_post_types();
    $out = '';
    foreach ($post_types as $key => $type) {
        $out .= "<label for='certain_post_types[$type]'>";
        $out .= "<input type='checkbox' id='certain_post_types[$type]' name='certain_post_types[$type]' ".checked($checked[$type], 'on', false).">";
        $out .= "$type</label><br>";
    }
    if ($echo) {
        echo $out;
    } else {
        return $out;
    }
}

Another approach, as forked by a user on GitHub, is to modify the capability required to access the ordering screen. This method uses a filter to change the default capability from manage_options to a custom one, which can then be assigned to specific user roles using a membership plugin.

Conclusion

Whether you choose the advanced plugin for its convenience or a custom-coded solution for maximum control, you are not limited by the default behavior of the Post Types Order plugin. The functionality to restrict the reordering interface to specific post types is well-documented and achievable.

Related Support Threads Support