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.


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)


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.