Tipo de publicación personalizada - campo de orden
En un tipo de publicación personalizada, ¿hay alguna manera de incluir el campo "order" que está disponible para las páginas?
¿Existe alguna lógica incorporada que evite valores duplicados en el campo "order"?
La idea es poder ordenar un tipo de publicación personalizada mediante un orden especificado por el usuario, y luego alfabéticamente por un campo personalizado basado en texto.

Al declarar tu tipo de publicación personalizada usando la función register_post_type, debes agregar 'page-attributes' al campo de soporte, como en el siguiente ejemplo:
register_post_type('miposttype', array(
'supports' => array('title', 'editor', 'page-attributes'),
'hierarchical' => false
));
También necesitarás agregar cualquier otra caja meta soportada al campo 'supports', consulta https://developer.wordpress.org/reference/functions/register_post_type/ para más información sobre los campos de register_post_type.
Además, hasta donde sé, no hay una forma incorporada de prevenir dos órdenes iguales, esto se debe a que puedes crear sub-ordenamientos basados en jerarquía (así que un grupo de páginas hijas puede tener un orden diferente a otro).

usar page-attributes
muestra tanto el campo order
como el campo parent
. ¿Cómo puedo eliminar el campo parent
?

Mi error, no me di cuenta de que tampoco querías los padres de página. Actualizaré mi respuesta para excluirlo.

Hola. Tengo este código pero no veo nada:
```
// Service Custom Post Type add_action( 'init', 'create_post_type' ); function create_post_type() {
$supports_args = array( 'title', 'editor', 'page-attributes' ); register_post_type( 'service', array( 'labels' => array( 'name' => ( 'Services' ), 'singular_name' => ( 'Service' ), 'supports' => $supports_args, 'hierarchical' => false ), 'public' => true, 'has_archive' => true, //'menu_position' => 2 ) ); }
```

@Sylar Me doy cuenta de que es muy tarde, pero me parece que tu 'supports' => $supports_args, 'hierarchical' => false está en la parte equivocada del array. Lo tienes anidado dentro del array de labels en tu ejemplo, debería estar en el array base, al mismo nivel que 'public' => true

Además de la respuesta de @Dave-Hunt, también puedes agregar un filtro, como el siguiente, para definir un orden personalizado - en este caso, alfabético por título. (Código gracias al post del blog de Mark Leong). Elimina la verificación is_admin()
si deseas que tu orden personalizado también se aplique en el front-end.
function set_custom_post_types_admin_order($wp_query) { if (is_admin()) { // Obtener el tipo de publicación desde la consulta $post_type = $wp_query->query['post_type']; if ( $post_type == 'POST_TYPE') { // El valor 'orderby' puede ser cualquier nombre de columna $wp_query->set('orderby', 'title'); // El valor 'order' puede ser ASC o DESC $wp_query->set('order', 'ASC'); } } } add_action('pre_get_posts', 'set_custom_post_types_admin_order');
Actualización
Para validación antes de guardar, consulta esta respuesta: https://wordpress.stackexchange.com/a/40095/4645 donde se discuten tus opciones. Básicamente, se reduce a jQuery personalizado, ya que WordPress no tiene hooks antes de guardar.
También (duplicando mi comentario anterior aquí para referencia futura), aquí está cómo exponer el campo 'orden del menú' en el admin, para que sea editable por el usuario, como lo es para páginas: Agregar columna 'orden del menú' a la pantalla de admin de tipos de publicación personalizados
