Jak ukryć wszystko w PUBLISH metabox z wyjątkiem przycisku Przenieś do kosza i PUBLIKUJ

10

Mam niestandardowy typ postu (nazywany kontaktami). Ponieważ ten typ posta nie działa jak post, nie chcę wyświetlać ZAPISZ PROJEKT, PODGLĄD, Status, Widoczność ani Data publikacji.

Jedyne opcje, które chcę pokazać, to PUBLIKUJ i przyciski Przenieś do kosza.

Czy istnieje sposób na ukrycie tych innych opcji? Jeśli nie, to jak utworzyć nowy PUBLIKACJA i przenieść do Kosza, który mogę dodać do nowego metaboksu?

katemerart
źródło

Odpowiedzi:

14

Możesz po prostu ukryć opcje za pomocą CSS. Spowoduje to dodanie wyświetlania: brak stylu do różnych i drobnych działań publikujących na stronach post.php i post-new.php. Sprawdza również określony typ postu, ponieważ wszystkie typy postów używają tych dwóch plików.

function hide_publishing_actions(){
        $my_post_type = 'POST_TYPE';
        global $post;
        if($post->post_type == $my_post_type){
            echo '
                <style type="text/css">
                    #misc-publishing-actions,
                    #minor-publishing-actions{
                        display:none;
                    }
                </style>
            ';
        }
}
add_action('admin_head-post.php', 'hide_publishing_actions');
add_action('admin_head-post-new.php', 'hide_publishing_actions');
Brian Fegter
źródło
Brian - Dzięki za szybką odpowiedź. Wypróbowałem tę funkcję, zastępując „POST_TYPE” nazwą niestandardowego typu posta (kontaktów), ale nic nie jest usuwane, gdy przechodzę do edycji / dodawania nowych stron.
katemerart,
Sprawdź moją najnowszą edycję. To powinno rozwiązać problem. :)
Brian Fegter,
To wspaniałe - otworzyło to zupełnie nowy sposób usuwania rzeczy, których nie chcę pokazywać !! Dziękuję bardzo.
katemerart,
Miło mi pomóc :)
Brian Fegter,
1
Aby to podkreślić: możesz usunąć poziom wcięcia dla swojego kodu, po prostu robiąc to if ( $post->post_type != $my_post_type ){ return; }na początku. Nie trzeba zawijać całego kodu w ifinstrukcji.
Pete
1

W tym przykładzie możesz łatwo ustawić, na których typach postów chcesz ukryć opcje publikowania, w przykładzie ukryto je dla typu wbudowanych puli pagei niestandardowego typu postu cpt_portfolio.

/**
 * Hides with CSS the publishing options for the types page and cpt_portfolio
 */
function wpse_36118_hide_minor_publishing() {
    $screen = get_current_screen();
    if( in_array( $screen->id, array( 'page', 'cpt_portfolio' ) ) ) {
        echo '<style>#minor-publishing { display: none; }</style>';
    }
}

// Hook to admin_head for the CSS to be applied earlier
add_action( 'admin_head', 'wpse_36118_hide_minor_publishing' );

Ważna aktualizacja

Proponuję również wymusić status posta „Opublikowane”, aby uniknąć zapisywania postów jako wersji roboczych:

/**
 * Sets the post status to published
 */
function wpse_36118_force_published( $post ) {
    if( 'trash' !== $post[ 'post_status' ] ) { /* We still want to use the trash */
        if( in_array( $post[ 'post_type' ], array( 'page', 'cpt_portfolio' ) ) ) {
            $post['post_status'] = 'publish';
        }
        return $post;
    }
}

// Hook to wp_insert_post_data
add_filter( 'wp_insert_post_data', 'wpse_36118_force_published' );
Nabil Kadimi
źródło