Cómo OCULTAR todo en PUBLICAR metabox excepto el botón Mover a la Papelera y PUBLICAR

10

Tengo un tipo de publicación personalizada (llamada contactos). Dado que este tipo de publicación no funciona como una publicación, no quiero mostrar GUARDAR BORRADOR, VISTA PREVIA, Estado, Visibilidad o Fecha de publicación.

Las únicas opciones que quiero mostrar son los botones PUBLICAR y Mover a la papelera.

¿Hay alguna manera de ocultar estas otras opciones? Si no, ¿cómo creo un nuevo PUBLISH & Move to Trash que puedo agregar a un nuevo metabox?

katemerart
fuente

Respuestas:

14

Simplemente puede ocultar las opciones usando CSS. Esto agregará una pantalla: ningún estilo a las acciones de publicación miscelánea y menor en las páginas post.php y post-new.php. También busca un tipo de publicación específico, ya que todos los tipos de publicación utilizan estos dos archivos.

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
fuente
Brian - Gracias por la rápida respuesta. Probé la función, reemplazando 'POST_TYPE' con el nombre del tipo de publicación personalizada (contactos), pero no se elimina nada cuando voy a editar / agregar nuevas páginas.
katemerart
Mira mi última edición. Debería solucionar el problema. :)
Brian Fegter
¡Eso es brillante, esto ha abierto una nueva forma de eliminar cosas que no quiero mostrar! Muchas gracias.
katemerart
Me alegro de ayudar :)
Brian Fegter
1
Solo para señalarlo: puede eliminar un nivel de sangría para su código simplemente haciendo if ( $post->post_type != $my_post_type ){ return; }al principio. No es necesario tener todo el código envuelto en la ifdeclaración.
Pete
1

En este ejemplo, puede establecer fácilmente en qué tipos de publicación desea ocultar las opciones de publicación, el ejemplo las oculta para el tipo de tipo de macetas integradas pagey el tipo de publicación personalizada 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' );

Actualización importante

También te sugiero que fuerces un estado de publicación de "Publicado" para evitar guardar publicaciones como borradores:

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