Register your taxonomies with 'show_ui' => false,
and then add a single meta box to manage them.
function create_book_tax() {
register_taxonomy(
'genre',
'book',
array(
'label' => __( 'Genre' ),
'rewrite' => array( 'slug' => 'genre' ),
'hierarchical' => true,
'show_ui' => false,
)
);
}
Or unhook the boxes from the side panel and put them below the main editor (using a post type and tax form the docs).
add_action(
'add_meta_boxes_book',
function () {
remove_meta_box( 'genrediv', 'book', 'side' );
$tax_name="genre";
$taxonomy = get_taxonomy( $tax_name );
$label = $taxonomy->labels->name;
$tax_meta_box_id = $tax_name . 'div';
add_meta_box(
$tax_meta_box_id,
$label,
$taxonomy->meta_box_cb
);
}
);
A third option is to create your own set of meta box containers and add your boxes to those.
add_action(
'add_meta_boxes_book',
function () {
remove_meta_box( 'genrediv', 'book', 'side' );
}
);
add_action(
'dbx_post_sidebar',
function ($post) {
$tax_name="genre";
$taxonomy = get_taxonomy( $tax_name );
$label = $taxonomy->labels->name;
$tax_meta_box_id = $tax_name . 'div';
add_meta_box(
$tax_meta_box_id,
$label,
$taxonomy->meta_box_cb,
'book',
'mycol1'
);
echo 'my boxes'; //debug
do_meta_boxes('book', 'mycol1', $post);
do_meta_boxes('book', 'mycol2', $post);
do_meta_boxes('book', 'mycol3', $post);
echo 'end my boxes'; //debug
}
);
If you look at the source you will see that the containers you created are surrounded by div
s with the mycol*-sortables
id
. You should be able to use that to create the columns you are after.