Custom post type - campo ordinamento
In un custom post type, è possibile includere il campo "ordinamento" che è disponibile per le pagine?
Esiste una logica incorporata che impedisce valori duplicati nel campo "ordinamento"?
L'idea è quella di poter ordinare un custom post type secondo un ordine specificato dall'utente, e successivamente in ordine alfabetico in base a un campo personalizzato basato su stringhe.

Quando dichiari il tuo custom post type utilizzando la funzione register_post_type, devi aggiungere 'page-attributes' al campo supports, come nell'esempio seguente:
register_post_type('myposttype', array(
'supports' => array('title', 'editor', 'page-attributes'),
'hierarchical' => false
));
Dovrai aggiungere anche altri meta box supportati al campo 'supports', consulta https://developer.wordpress.org/reference/functions/register_post_type/ per maggiori informazioni sui campi di register_post_type.
Inoltre, per quanto ne so, non esiste un modo integrato per prevenire due ordini uguali, questo perché puoi creare sotto-ordini basati sulla gerarchia (quindi un gruppo di pagine figlie può avere un ordinamento diverso da un altro).

usando page-attributes
vengono mostrati sia il campo order
che il campo parent
. Come posso eliminare il campo parent
?

Colpa mia, non avevo capito che non volevi neanche i genitori della pagina. Aggiornerò la mia risposta per escluderlo.

Ciao. Ho questo codice ma non vedo nulla:
```
// 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 Mi rendo conto che è molto tardi, ma mi sembra che il tuo 'supports' => $supports_args, 'hierarchical' => false si trovi nella parte sbagliata dell'array. Nel tuo esempio è annidato sotto l'array labels, dovrebbe invece essere nell'array base, allo stesso livello di 'public' => true

Oltre alla risposta di @Dave-Hunt, puoi anche aggiungere un filtro, come il seguente, per definire un ordinamento personalizzato - in questo caso, alfabetico per titolo. (Codice grazie al post sul blog di Mark Leong.) Rimuovi il controllo is_admin()
se desideri che il tuo order_by personalizzato sia applicato anche nel front-end.
function set_custom_post_types_admin_order($wp_query) { if (is_admin()) { // Ottieni il post type dalla query $post_type = $wp_query->query['post_type']; if ( $post_type == 'POST_TYPE') { // 'orderby' può essere qualsiasi nome di colonna $wp_query->set('orderby', 'title'); // 'order' può essere ASC o DESC $wp_query->set('order', 'ASC'); } } } add_action('pre_get_posts', 'set_custom_post_types_admin_order');
Aggiornamento
Per la validazione pre-salvataggio, consulta questa risposta: https://wordpress.stackexchange.com/a/40095/4645 dove vengono discusse le tue opzioni. Fondamentalmente, si riduce all'uso di jQuery personalizzato, poiché WordPress non dispone di hook pre-salvataggio.
Inoltre (duplicando qui il mio precedente commento per riferimento futuro), ecco come esporre il campo 'ordine del menu' nell'amministrazione, rendendolo modificabile dall'utente, come avviene per le pagine: Aggiungere la colonna 'ordine del menu' alla schermata di amministrazione del post type personalizzato
