web-dev-qa-db-fra.com

Supprimer le style Wordpress par défaut des métaboxes sur les pages de publication?

Existe-t-il un moyen d'empêcher Wordpress d'emballer automatiquement chaque metabox dans la classe postbox? Ou au moins ajouter ma propre division externe pour que je puisse apporter des modifications personnalisées via css? Merci!

1
Ben

Ajoutez vos classes nécessaires avec le filtre postbox_classes_{$page}_{$id}. Par exemple...

function add_class($classes) {
  $classes[] = 'awesome-new-class-that-I-could-not-live-without';
  return $classes;
}
add_filter('postbox_classes_post_submitdiv','add_class');

Cela ajoutera votre classe à la méta-boîte "Soumettre" - celle avec l'en-tête "Publier" - sur la page d'édition "Publier". Vous pouvez obtenir ces valeurs en regardant la source de la page. La partie {$page} est révélée dans un peu de Javascript près du sommet. Recherchez pagenow. {$ Id} est l'attribut id de metabox <div>.

2
s_ha_dum

Voici une réponse comment modifier les classes css de métaboxes. Je ne voudrais pas supprimer la classe postbox, car il est nécessaire d'ouvrir et de fermer la metabox. Mais vous pouvez attacher votre propre classe css pour styler la metabox et les éléments html suivants.

Mais vous devez modifier chaque metabox, il n'y a pas de hook général pour tous les metabox. Utilisez le $wp_meta_boxes global pour savoir quelles métaboxes sont disponibles sur l'écran actuel.

add_action( 'wp_dashboard_setup', 'close_all_meta_boxes', 999 );

function close_all_meta_boxes() {

    global $wp_meta_boxes;

    $screen = get_current_screen();
    $page = $screen->id;

    if ( isset( $wp_meta_boxes[$page] ) ) {

        foreach ( $wp_meta_boxes[$page] as $parts ) {

            if ( is_array( $parts ) ) {

                foreach ( $parts as $part ) {

                    if ( is_array( $part ) ) {

                        foreach ( $part as $id => $metabox ) {

                            add_filter( "postbox_classes_{$page}_{$id}", 'modify_meta_box_css' );

                        }

                    }
                }

            }

        }
    }

}

function modify_meta_box_css( $classes ) {

    if ( is_array( $classes ) ) {
        array_Push( $classes, 'closed' );
    }

    return $classes;

}

Ce code ajoutera la classe closed à toutes les métaboxes du tableau de bord, de sorte que toutes les métaboxes seront affichées minifiées.

2
Ralf912