Niestandardowy typ postu - pole zamówienia

14

Czy w niestandardowym typie postów można uwzględnić pole „zamówienie” dostępne dla stron?

Czy jest jakaś wbudowana logika, która zapobiega duplikowaniu wartości w polu „zamówienie”?

Chodzi o to, aby móc posortować niestandardowy typ postu według kolejności określonej przez użytkownika, a następnie alfabetycznie według niestandardowego pola opartego na łańcuchach.

Force Flow
źródło

Odpowiedzi:

25

Podczas deklarowania niestandardowego typu postu za pomocą funkcji register_post_type musisz dodać „atrybuty strony” do pola wsparcia, jak w poniższym przykładzie:

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

Musisz również dodać inne obsługiwane obsługiwane pola meta do pola „obsługuje”, zobacz http://codex.wordpress.org/Function_Reference/register_post_type, aby uzyskać więcej informacji na temat pól register_post_type.

Również, o ile wiem, nie ma żadnego wbudowanego sposobu, aby zapobiec dwóm tym samym zamówieniom, ponieważ jest to możliwe, ponieważ można tworzyć pod-porządkowanie oparte na heirarchii (więc jedna grupa stron podrzędnych może mieć inną kolejność niż inna)

Dave Hunt
źródło
użycie page-attributesprzedstawia zarówno orderpole, jak i parentpole. Jak pozbyć się parentpola?
Force Flow,
Nieważne. Ustawienie wartości hierarchicalfalse powoduje usunięcie.
Force Flow,
Mój zło, nie zdawałem sobie sprawy, że nie chcesz również rodziców strony. Zaktualizuję moją odpowiedź, aby ją wykluczyć.
Dave Hunt
Cześć. Mam ten kod, ale nic nie widzę: `` // Usługa niestandardowego typu postu add działań ('init', 'create_post_type'); funkcja create_post_type () {$ obsługuje_args = tablica („tytuł”, „edytor”, „atrybuty strony”); register_post_type („usługa”, tablica („etykiety” => tablica („nazwa” => __ („Usługi”), „nazwa pojedyncza” => __ („Usługa”), „obsługuje” => $ wspiera_argsy, „hierarchiczny” => false), 'public' => true, 'has_archive' => true, // 'menu_position' => 2)); } ``
Sylar,
@Sylar Zdaję sobie sprawę, że jest bardzo późno, ale wydaje mi się, że twoje „wspiera” => $ wspiera_args, „hierarchiczna” => fałsz jest w niewłaściwej części tablicy. W twoim przykładzie jest zagnieżdżony pod tablicą etykiet, powinien znajdować się w tablicy bazowej, na tym samym poziomie co „public” => true
Dave Hunt
4

Oprócz odpowiedzi @ Dave-Hunta możesz także dodać filtr, taki jak poniżej, aby zdefiniować niestandardową kolejność - w tym przypadku alfabetycznie według tytułu. (Kod dzięki postowi na blogu Marka Leonga ) . Usuń is_admin()zaznaczenie, jeśli chcesz również niestandardowe zamówienie przez front-end.

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

    // Pobierz typ postu z zapytania
    $ post_type = $ wp_query-> query ['post_type'];

    if ($ post_type == 'POST_TYPE') {

      // wartością „orderby” może być dowolna nazwa kolumny
      $ wp_query-> set ('orderby', 'title');

      // wartością „zamówienia” może być ASC lub DESC
      $ wp_query-> set ('order', 'ASC');
    }
  }
}
add Działalności („pre_get_posts”, „set_custom_post_types_admin_order”);

Aktualizacja

Aby sprawdzić poprawność przed zapisaniem, zapoznaj się z tą odpowiedzią: /wordpress//a/40095/4645, gdzie omówione są twoje opcje. Zasadniczo sprowadza się to do niestandardowego jQuery, ponieważ WordPress nie ma żadnych zaczepów przed zapisaniem.

Również (powielając mój poprzedni komentarz tutaj do wglądu w przyszłości), oto jak odsłonić pole „porządek menu” w adminie, dzięki czemu można go edytować, tak jak w przypadku stron: Dodawanie kolumny „porządek menu” do niestandardowego ekranu administratora typu posta

marfarma
źródło