Niestandardowe typy postów: Jak pozbyć się edytora (-meta box)


9

Pytam, jak mogę pozbyć się post-edytora (visual + HTML). Próbowałem nie rejestrować obsługi typu posta i nadal się pojawia (wyrejestrowanie działa poprawnie z każdym innym domyślnym polem na ekranie edycji postu). Próbowałem też wyrejestrować go za pomocą remove_meta_box, co też nie działało (działa dla wszystkich innych elementów poza meta boxem tytułu). Może czegoś mi brakuje. Przeszukałem już sieć i nic nie mogłem znaleźć. Mam nadzieję, że ktoś może mi powiedzieć. Dzięki!

Ps. Byłbym szczęśliwy z powodu rozwiązania problemu wyłączenia pola tytułowego, ale jest to 2. miejsce (nie rejestrowanie go w typie postów działa).

(Wersja Wordpress to 3.0.4.)

Odpowiedzi:


17

Podanie pustej tablicy dla „podpór” w deklaracji typu postu powinno pozbyć się edytora i tytułu oraz wszystkich innych domyślnych pól na stronie edycji posta.

$supports = array ('');
    $args = array(
      'label' => 'people',
      'supports' => $supports,
      'hierarchical' => false,
      'public' => true,
      'rewrite' => true
         );

    register_post_type( 'people', $args);

Wynik: alternatywny tekst wypełnij „obsługuje” dowolnymi elementami, które chcesz wyświetlić, takimi jak trackbacki, komentarze itp. Lub po prostu pozostaw puste, aby pozostawić stronę pustą, z wyjątkiem pola, w którym możesz zapisać swoje posty. Odwiedź tę stronę , jeśli chcesz pozbyć się również hierarchicznych metaboksów taksonomii.


Dziękuję do tej pory. Mój problem polega na tym, że nie mogę ustawić wszystkiego na pusty. Napisałem trzy klasy, aby przyspieszyć generowanie niestandardowych typów postów, niestandardowych taksonomii i tagów. Mają domyślne. W przypadku niestandardowych typów postów jest to po prostu wszystko. Ale muszę wyrejestrować niektóre pola dla określonych typów postów. I dla jednego muszę też wyrejestrować okno edytora.
kaiser

Interesuje mnie, co masz na myśli mówiąc, że wszystko jest puste? Jeśli chcesz pozbyć się edytora, po prostu nie wstawiaj; edytor 'do tablicy' wspiera 'podczas tworzenia typu postu w swojej klasie.
Manny Fleurmond 13.01.11

2
@kaiser, jeśli to twoje własne zajęcia, na czym polega problem?
Zmusić

@Rarst: To tylko podstawa, która czyni następujące rzeczy: rejestruje typy postów i taksonomie z tablicy i oferuje filtr dla etykiet $ i $ args (domyślny i specyficzny). Klasa terminów generuje tylko warunki, których nie można usunąć, które aktualizują i przypisują z tablicy. Meta boxy mogą być łatwe bez klasy i nie ma dla mnie sensu integracja. Zajęcia są dostępne tylko po to, by zaoszczędzić mi czasu i powstrzymać klientów przed usunięciem warunków, których potrzebuje system. Ale dzięki za opiekę. Wasza pomoc jest bardzo doceniana (ponownie) :)
Kaiser

2
@kaiser to jaki jest problem z ustawieniem supportspustej tablicy przez filtr?
Rarst 13.01.11

15

Jeśli supportsargument nie zostanie przekazany , użyte zostaną ustawienia domyślne'title', 'editor' (gdzie „nic” to cokolwiek, co jest empty()).

Jednak podobnie jak możesz dodać wsparcie dla czegoś po zarejestrowaniu typu posta add_post_type_support( $post_type, $feature ), możesz usunąć wsparcie dla czegoś, dzwoniąc remove_post_type_support( $post_type, $feature ). Dlatego wywołanie tego po zarejestrowaniu typu postu powinno usunąć edytor:

remove_post_type_support( 'my_post_type', 'editor' );

Funkcje te po prostu manipulują $_wp_post_type_featureszmienną globalną , ale zawsze lepiej jest to robić za pomocą funkcji API, niż samodzielnie nią manipulować .


ROZWIĄZANIE! Zawsze myślałem, że to tylko usunięcie ex. miniatury lub menu nav_menu za pomocą motywu podrzędnego. Wielkie dzięki!
kaiser

1
Och, tęskniłem za tym. Dobra uwaga, przekazanie pustej tablicy będzie miało wartość pustą ... Przekazywanie pustych wartości jest zawsze takim bałaganem, jest sprzeczne z intuicją, dlatego jest traktowane jak domyślne zamiast niczego . :(
Rarst 13.01.11

1
@Rarst: Myślę, że zadziałałoby również, gdybyś podał fałszywą nazwę funkcji. To tylko klucz tablicy, więc nie ma znaczenia, czy zostaną wstawione dane pozorne. Ja kiedyś 0.1zamiast 0dla parametru przekazać empty()czek.
Jan Fabry

1
@Jan Fabry, tak, to nie pierwszy raz, kiedy nadepnąłem na niego empty(). Jak wyżej - wysoce sprzeczne z intuicją.
Rarst 13.01.11

Hm Nie działa z kluczami i dlatego myślę, że „wartości zastępcze” mogą stać się kolejną „kopalnią” podczas późniejszej aktualizacji (spróbuj znaleźć złą wartość). W każdym razie: dziękuję wam obojgu! :) Edycja: przydałby się, gdyby wartości nie były tam tylko, ale byłyby parami klucz / wartość. Dawny. 'support' => array('thumbnail' => true, 'editor' => false);
kaiser

2

Używam wtyczki UI do tworzenia niestandardowych typów postów. Za pomocą tej wtyczki możesz wyłączyć post-edytor w opcjach zaawansowanych.

Zarządzaj typem postu -> Wyświetl opcje zaawansowane

Oto link do wtyczki: http://wordpress.org/extend/plugins/custom-post-type-ui/

PS - Pozwala także wyłączyć pole tytułu :)


Jak wspomniano powyżej, napisałem trzy klasy i dlatego nie mogę przejść na wtyczkę. Mam na myśli, że i tak nie rozważałbym użycia wtyczki. Wtyczki są (imo) do programowania lub łatwych do wymiany rzeczy, takich jak formularze komentarzy, a nie podstawowe rzeczy, takie jak typy postów lub taksonomie. W każdym razie dzięki!
kaiser

1
W rzeczywistości wtyczki są w stanie dostosować prawie wszystko w Wordpress, w tym niestandardowe typy postów. Teraz tworzę wtyczkę, która tworzy wiele typów postów, ich metaboksy i różne niestandardowe pola.
Manny Fleurmond 13.01.11

@Manny Fleurmond: Jeśli masz zamiar się podzielić, proszę o przesłanie mi linku. Nadal zastanawiam się, może - może też w moich klasach - rutynowym tworzeniu zaawansowanych meta-boxów.
kaiser

0

Sprawdź register_post_type (); w kodeksie. W sekcji Argumenty przewiń w dół, aż zobaczysz Wsparcie .

Od wersji 3.5 wartość logiczna falsemoże być przekazywana jako wartość zamiast tablicy, aby zapobiec domyślnemu zachowaniu (tytuł i edytor).

Lub dostosuj niestandardowy typ wpisu, jak chcesz, dodając odpowiednie wartości, na przykład:

'supports' => array(
    'title',
    'author',
    'thumbnail',
    'post-formats'
),

Te obsługiwane opcje w mojej tablicy pojawią się w backendie WordPress.


-2

Możesz także ustawić styl strony edycji administratora, aby ukryć elementy serwisowe, takie jak edytor itp.

function custom_colors() {
   echo '<style type="text/css">
            body.post-type-events #postdivrich {
            display: none;
            }
         </style>';
}

add_action('admin_head', 'custom_colors');

Dziękujemy za odpowiedź, ale to (a) uniemożliwiłoby usunięcie, ponieważ nie jest zarejestrowane w interfejsie API zależności i (b) było dostępne dla osób, które wiedzą, jak korzystać z narzędzi programistycznych przeglądarek.
kaiser
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.