Come nascondere tutto in metabox PUBBLICO tranne il pulsante Sposta nel cestino e PUBBLICA


10

Ho un tipo di post personalizzato (chiamato contatti). Poiché questo tipo di post non funziona come un post, non voglio mostrare SALVA PROGETTO, ANTEPRIMA, Stato, Visibilità o Data pubblicazione.

Le uniche opzioni che voglio mostrare sono i pulsanti PUBBLICA e Sposta nel cestino.

C'è un modo per nascondere queste altre opzioni? In caso contrario, come posso creare un nuovo PUBLISH & Move to Trash che posso aggiungere a un nuovo metabox?

Risposte:


14

Puoi semplicemente nascondere le opzioni usando i CSS. Ciò aggiungerà un display: nessuno stile alle azioni di pubblicazione misc e minori sulle pagine post.php e post-new.php. Verifica anche un tipo di post specifico poiché tutti i tipi di post utilizzano questi due file.

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 - Grazie per la rapida risposta. Ho provato la funzione, sostituendo 'POST_TYPE' con il nome del tipo di post personalizzato (contatti), ma nulla viene rimosso quando vado a modificare / aggiungere nuove pagine.
Katemerart,

Dai un'occhiata alla mia ultima modifica. Dovrebbe risolvere il problema. :)
Brian Fegter l'

È geniale: questo ha aperto un modo completamente nuovo di rimuovere le cose che non voglio mostrare !! Grazie mille.
Katemerart,

Lieto di dare una mano :)
Brian Fegter l'

1
Giusto per sottolinearlo: puoi rimuovere un livello di rientro per il tuo codice semplicemente facendo if ( $post->post_type != $my_post_type ){ return; }all'inizio. Non è necessario che l'intero codice venga inserito ifnell'istruzione.
Pete,

1

In questo esempio puoi facilmente impostare su quali tipi di post vuoi nascondere le opzioni di pubblicazione, l'esempio li nasconde per il tipo di pentole incorporato pagee il tipo di post personalizzato 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' );

Aggiornamento importante

Vorrei anche suggerire di forzare uno stato di post "Pubblicato" per evitare di salvare post come bozze:

/**
 * 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' );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.