web-dev-qa-db-fra.com

Comment cacher tout dans METABox PUBLISH sauf le bouton Move to Trash & PUBLISH

J'ai un type de message personnalisé (appelé contacts). Étant donné que ce type de message ne fonctionne pas comme un message, je ne souhaite pas afficher SAVE DRAFT, PREVIEW, Statut, Visibilité ou Date de publication.

Les seules options que je veux montrer sont les boutons PUBLISH & Move to Trash.

Est-il possible de cacher ces autres options? Si non, comment créer un nouveau PUBLISH & Move to Trash que je peux ajouter à un nouveau metabox?

10
katemerart

Vous pouvez simplement masquer les options en utilisant CSS. Cela ajoutera un style display: none aux actions de publication diverses et mineures des pages post.php et post-new.php. Il vérifie également un type de publication spécifique, car tous les types de publication utilisent ces deux fichiers.

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');
14
Brian Fegter

Dans cet exemple, vous pouvez facilement définir les types de publication pour lesquels vous souhaitez masquer les options de publication. Cet exemple les masque pour les types de pots intégrés, tapez page et le type de publication personnalisé 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' );

Mise à jour importante

Je vous suggère également de forcer le statut de publication "Publié" pour éviter de sauvegarder les publications en tant que brouillons:

/**
 * 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' );
1
Nabil Kadimi