Wordpress - Custom post type - order field

When declaring your custom post type using the register_post_type function, you have to add 'page-attributes' to the support field, like in the following example:

register_post_type('myposttype', array(
    'supports' => array('title', 'editor', 'page-attributes'),
    'hierarchical' => false
));

You'll need to add any other supported meta boxes as well to the 'supports' field, see http://codex.wordpress.org/Function_Reference/register_post_type for more information about the register_post_type fields.

Also as far as I know there isn't any built in way to prevent two of the same order, this is because you can create sub-ordering based on heirarchy (so one group of children pages can have a different ordering than another)


In addition to @Dave-Hunt's response, you can also add a filter, such as the following, to define a custom order - in this case, alphabetical by title. (Code thanks to Mark Leong's blog post.) Remove the is_admin() check, if you want you custom order_by on the front-end as well.

function set_custom_post_types_admin_order($wp_query) {
  if (is_admin()) {

    // Get the post type from the query
    $post_type = $wp_query->query['post_type'];

    if ( $post_type == 'POST_TYPE') {

      // 'orderby' value can be any column name
      $wp_query->set('orderby', 'title');

      // 'order' value can be ASC or DESC
      $wp_query->set('order', 'ASC');
    }
  }
}
add_action('pre_get_posts', 'set_custom_post_types_admin_order');

Update

For pre-save validation, see this answer: https://wordpress.stackexchange.com/a/40095/4645 where your options are discussed. Basically, it comes down to custom jQuery, as WordPress doesn't have any pre-save hooks.

Also (duplicating my previous comment here for future reference), here's how to expose the 'menu order' field in the admin, so it's user-editable, as it is for pages: Adding 'menu order' column to custom post type admin screen