Dostosować ekran edycji postów dla niestandardowych typów postów?

15

Jaki jest najlepszy sposób, aby całkowicie dostosować ekran administratora Edytuj post dla określonego niestandardowego typu postu?

Dostosowałem go w pewnym stopniu już podczas tworzenia niestandardowego typu postu - dodając dodatkowe pola itp., Ale chcę usunąć wiele elementów, takich jak łącza bezpośrednie, podgląd postu, wyłączyć szybką edycję itp.

fxfuture
źródło

Odpowiedzi:

16

Odpowiedzi na niektóre z tych pytań znajdują się tutaj: Ustaw domyślne opcje ekranu administratora i kolejność Metabox

Aby usunąć metaboks permalink:

function my_remove_meta_boxes() {
    remove_meta_box('slugdiv', 'my-post-type', 'core');
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );

dodatkowo będziesz musiał ukryć # edit-slug-box za pomocą css lub javascript. patrz: Ładowanie zewnętrznych skryptów do administratora, ale TYLKO dla określonego typu posta?

Aby wyłączyć szybką edycję:

function my_remove_actions( $actions, $post ) {
    if( $post->post_type == 'my-post-type' ) {
        unset( $actions['inline hide-if-no-js'] );
    }
    return $actions;
}
add_filter( 'post_row_actions', 'my_remove_actions', 10, 2 );

Aby zmienić link podglądu, możesz użyć filtra „Preview_post_link”, ale działa tylko wtedy, gdy post nie został jeszcze opublikowany. Rozwiązaniem byłoby usunięcie meta boxu przesyłania i dodanie własnego zmodyfikowanego:

function my_replace_submit_meta_box() {
    remove_meta_box('submitdiv', 'my-post-type', 'core');
    add_meta_box('submitdiv', __('Publish'), 'custom_post_submit_meta_box', 'my-post-type', 'side', 'core');
}
add_action( 'admin_menu', 'my_replace_submit_meta_box' );

function custom_post_submit_meta_box() { // a modified version of post_submit_meta_box() (wp-admin/includes/meta-boxes.php, line 12)
    ...
}
sorich87
źródło
Dzięki wielkie. Od wieków szukam odpowiedzi na to pytanie! Czy istnieje także sposób, aby zmienić link do przycisku Podgląd w polu Publikuj? Chciałbym link do mysite.com/video?id='id posta 'lub otworzyć lightbox za pomocą odtwarzacza wideo
fxfuture
Cześć znowu - właściwie nie mogę dostać żadnego z tych fragmentów kodu, który podałeś do pracy. Metabox permalink po prostu wyłącza zapisywanie zmian w permalink, zamiast go ukrywać, i nie mogę w ogóle wyłączyć linku Szybkiej edycji. Jakieś pomysły?
fxfuture
Zredagowałem swoją odpowiedź. Właśnie przetestowałem reklamę szybkiej edycji, która działa. Mówisz o linku do szybkiej edycji pod nazwą posta na: wp-admin / edit.php? Post_type = sis_course, prawda?
sorich87
Świetnie, spojrzę na dodatkowe informacje, które opublikowałeś. Udało mi się ukryć szybką edycję, zmieniając „hierarchical” => false w niestandardowym typie postu. Wydaje się, że to nie robi różnicy, ponieważ i tak używam wtyczki Order Types Post. Dzięki!
fxfuture
Zastąpienie przesłanego meta boxa działało idealnie! W rzeczywistości musiał zawierać $ post między nawiasami w twojej funkcji - tj. Custom_post_submit_meta_box ($ post). Więc to wszystko posortowane :) Jest trochę więcej dostosowywania Chcę zrobić zarówno dla wpisów z listy, jak i ekranu edycji wpisów - czy znasz przewodnik, który szczegółowo opisuje, jak usunąć / zamienić wszystkie różne elementy?
fxfuture