Como ocultar tudo na metabox PUBLISH, exceto o botão Mover para a lixeira e PUBLISH

10

Eu tenho um tipo de postagem personalizado (chamado de contatos). Como esse tipo de postagem não está funcionando como uma postagem, não quero mostrar SALVAR PROJETO, VISUALIZAÇÃO, Status, Visibilidade ou Data de Publicação.

As únicas opções que eu quero mostrar são os botões PUBLISH & Move to Trash.

Existe uma maneira de ocultar essas outras opções? Caso contrário, como crio um novo PUBLISH & Move to Trash que posso adicionar a um novo metabox?

katemerart
fonte

Respostas:

14

Você pode simplesmente ocultar as opções usando CSS. Isso adicionará um estilo display: none às ações de publicação diversas e secundárias nas páginas post.php e post-new.php. Ele verifica também um tipo de postagem específico, pois todos os tipos de postagem usam esses dois arquivos.

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
fonte
Brian - Obrigado pela resposta rápida. Eu tentei a função, substituindo 'POST_TYPE' pelo nome do tipo de postagem personalizado (contatos), mas nada é removido quando vou na edição / adição de novas páginas.
katemerart
Confira minha edição mais recente. Deve corrigir o problema. :)
Brian Fegter
Isso é brilhante - isso abriu uma maneira totalmente nova de remover coisas que eu não quero mostrar! Muito obrigado.
Kernelerart
Fico feliz em ajudar :)
Brian Fegter
11
Apenas para salientar: você pode remover um nível de recuo do seu código simplesmente fazendo isso if ( $post->post_type != $my_post_type ){ return; }no início. Não há necessidade de incluir todo o seu código na ifdeclaração.
Pete
1

Neste exemplo, você pode definir facilmente em quais tipos de postagem você deseja ocultar as opções de publicação; o exemplo as oculta para o tipo de vasos embutidos pagee o tipo de postagem personalizado 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' );

Atualização Importante

Sugiro também que você force um status de postagem "Publicado" para evitar salvar postagens como rascunhos:

/**
 * 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
fonte