Usuń niestandardowy metaboks taksonomii z ekranu niestandardowego typu postu

17

Mam dwie hierarchiczne niestandardowe taksonomie, każda na odpowiadającym niestandardowym typie postu. Chciałbym usunąć metaboks dla każdego z ekranu edycji typu posta.

Przeczytałem Usuń niestandardowy metaboks taksonomii z niestandardowego typu postu i Jak usunąć metaboks taksonomii w stylu kategorii (hierarchiczny)? ale wciąż utknąłem.

Używam funkcji:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

Rozpakowałem przedrostki post_typ i custom_taxonomies, ale to wszystko. Próbowałem użyć admin_menuhaka i add_meta_boxeshaka zalecanego przez Codex. Próbowałem obu normali sidedla trzeciego parametru.

Powyższa funkcja znajduje się w mu-pluginspliku poniżej funkcji, która rejestruje typy postów i taksonomie.


EDYCJA: To była literówka w funkcji register_taxonomy. Jestem okropną osobą. Dziękuję wszystkim za pomoc. Wciąż nauczyłem się kilku rzeczy!

mrwweb
źródło
nawet z 'show_ui' => false?
JMau
1
Chcę nadal mieć interfejs w menu, ale nie podczas edytowania postu.
mrwweb,

Odpowiedzi:

37

Jeśli ręcznie rejestrujesz swoją niestandardową taksonomię za pomocą register_taxonomy , możesz przekazać argumenty, aby kontrolować, gdzie pojawia się metaboks.

W poniższym przykładzie ustawienie show_uisię falseby całkowicie usunąć METABOX z ekranu edycji, na ekranie szybkiej edycji i menu administratora. Ale jeśli ustawisz show_uisię truemożna osiągnąć kontrolę bardziej zróżnicowany wtedy użyciu show_in_quick_editi meta_box_cbargumentów (ustawienie później do fałszywych ukrywa METABOX na ekranie edycji CPT jako pożądany).

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);
locomo
źródło
Działa. zachowaj menu administratora i usuń niestandardową systematykę w formie dodaj nowy niestandardowy typ postu. Dzięki.
IT Vlogs
Dziękuję Ci! Szukałem 'meta_box_cb' => false, aby ukryć go w post-new, gdzie ustawienie go na null tylko wyświetla domyślną wersję wordpress.
Ryan H
Gładki i prosty.
Travis van der Font,
7

Mówisz, że chcesz usunąć pola z postekranu edycji, a nie z ekranu Typ postu, więc zakładając, że powinieneś być w stanie zarejestrować swoją taksonomię tylko dla typów postów, do których ma się stosować, i całkowicie tego unikać. Przykład w Kodeksie rejestruje przykładową taksonomię tylko dla booktypu postu, takiego jak:

register_taxonomy( 'genre', array( 'book' ), $args );

Myślę, że właśnie to musisz zrobić, ale nie opublikowałeś żadnego kodu rejestracyjnego dla typów poczt ani taksonomii.

Jeśli sam utworzyłeś metaboksy - to znaczy te pola nie są domyślnymi - to sposobem na uniknięcie tego problemu jest zarejestrowanie metaboksów w hakach specyficznych dla typu post :

do_action('add_meta_boxes_' . $post_type, $post);

Lub postępuj zgodnie z powyższym przykładem:

add_action('add_meta_boxes_book', 'your-box-callback');

Jedno z tych podejść powinno rozwiązać to dla Ciebie. Nie sądzę, że powinieneś remove_meta_boxw ogóle korzystać.

Jeśli próbujesz usunąć metadane z typu posta, do którego są zarejestrowani, działa to (ponownie zgodnie z przykładem w Kodeksie):

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

Jestem pewien, że admin_menuto za wcześnie, ale tego nie zweryfikowałem. add_metaboxesdziała również dla mnie. Nie wiem, dlaczego ci to nie działa.

s_ha_dum
źródło
Przepraszam, że jestem niejasny. Miałem na myśli ekran typu postu . Każda taksonomia jest zarejestrowana tylko dla jednego niestandardowego typu postu. Próbowałem krótko użyć tego haka add_meta_boxes_ *, ale spróbuję wypróbować kilka jego odmian (chociaż korzystam z automatycznie generowanych metaboksów).
mrwweb,
Zatem ostatnia opcja w odpowiedzi powinna to zrobić. Przetestowałem to. Pudełko znika. Nie mogę jednak powiedzieć, że rozumiem logikę posiadania taksonomii bez skrzynek.
s_ha_dum,
(Patrz edycja powyżej. To była literówka. To na mnie ... Dziękuję za pomoc). Aby odpowiedzieć na twoje pytanie, wyświetlam taksonomie z zaawansowanym niestandardowym polem (jest to lepszy interfejs dla użytkowników witryny).
mrwweb,
Twój ostatni przykład skierował mnie we właściwym kierunku, ale to działało dla mnie: add activity ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque,
Odkryłem, że ta składnia nie działa z bieżącą wersją WordPress, sprawdź tę odpowiedź, aby znaleźć działające rozwiązanie.
Davey
3

Używając ACF do niestandardowego zarządzania taksonomiami, domyślne metaboksy są niepotrzebne. Próbowałem z powodzeniem tego kodu:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

Niższy priorytet (100) pozwala, aby ten kod działał również, jeśli taksonomie są tworzone przez wtyczkę taką jak CPT-UI.

fabiodipa
źródło
tagdiv powinien mieć końcowe -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood