Câmp de ordonare pentru tipuri de postări personalizate
Într-un tip de postare personalizat, există vreo modalitate de a include câmpul "order" care este disponibil pentru pagini?
Există vreo logică incorporată care să prevină valorile duplicate în câmpul "order"?
Ideea este de a putea sorta un tip de postare personalizat după o ordine specificată de utilizator, apoi alfabetic după un câmp personalizat bazat pe șiruri de caractere.

Când declarați tipul de postare personalizat folosind funcția register_post_type, trebuie să adăugați 'page-attributes' în câmpul supports, ca în exemplul următor:
register_post_type('myposttype', array(
'supports' => array('title', 'editor', 'page-attributes'),
'hierarchical' => false
));
Va trebui să adăugați și orice alte meta box-uri suportate în câmpul 'supports', consultați https://developer.wordpress.org/reference/functions/register_post_type/ pentru mai multe informații despre câmpurile register_post_type.
De asemenea, din câte știu eu, nu există nicio metodă încorporată pentru a preveni două postări cu aceeași ordine, acest lucru se datorează faptului că puteți crea sub-ordonare bazate pe ierarhie (astfel încât un grup de pagini copil poate avea o ordonare diferită față de altul).

folosirea page-attributes
afișează atât câmpul order
cât și câmpul parent
. Cum pot elimina câmpul parent
?

Greșeala mea, nu am realizat că nu doreai și părinții paginilor. Voi actualiza răspunsul meu pentru a-l exclude.

Salut. Am acest cod dar nu văd nimic:
```
// 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 dau seama că e foarte târziu, dar mi se pare că 'supports' => $supports_args, 'hierarchical' => false se află în partea greșită a array-ului. În exemplul tău sunt cuibate sub array-ul labels, dar ar trebui să fie în array-ul de bază, la același nivel cu 'public' => true

În plus față de răspunsul lui @Dave-Hunt, poți adăuga și un filtru, precum cel de mai jos, pentru a defini o ordine personalizată - în acest caz, alfabetic după titlu. (Codul mulțumită postării de pe blogul lui Mark Leong.) Elimină verificarea is_admin()
, dacă dorești ca ordinea personalizată să fie aplicată și în front-end.
function set_custom_post_types_admin_order($wp_query) { if (is_admin()) { // Obține tipul de post din interogare $post_type = $wp_query->query['post_type']; if ( $post_type == 'POST_TYPE') { // Valoarea 'orderby' poate fi orice nume de coloană $wp_query->set('orderby', 'title'); // Valoarea 'order' poate fi ASC sau DESC $wp_query->set('order', 'ASC'); } } } add_action('pre_get_posts', 'set_custom_post_types_admin_order');
Actualizare
Pentru validare pre-salvare, vezi acest răspuns: https://wordpress.stackexchange.com/a/40095/4645 unde sunt discutate opțiunile tale. Practic, se reduce la jQuery personalizat, deoarece WordPress nu are hook-uri pre-salvare.
De asemenea (repetând aici comentariul meu anterior pentru referință viitoare), iată cum poți expune câmpul 'menu order' în administrație, astfel încât să poată fi editat de utilizator, așa cum este pentru pagini: Adăugarea coloanei 'menu order' în ecranul de administrare al tipului de post personalizat
