custom post type vs. conditionally displaying meta boxes for specific terms?

I will start from the end.

Post Format is a taxonomy with only 9 terms. The only reason they exists is to set a sort of standard for theme developers.
Once the terms are only 9, and the term names cannot be changed by the users, (the users can select them only via a radio button when create posts), theme developers can create template files like "taxonomy-post_format-gallery.php" being sure that this template will be used for archive of posts with ‘gallery’ post format. Also can use has_post_format function with a specific term: this cannot be done with standard categories or custom taxonomy, because the terms are choosen by users.

E.g. if I create a theme and put somewhere a conditional if ( has_category('foo') ) and my theme is used by other people, I can’t be sure that the users of my theme will use the category ‘foo’ for their posts, on the countrary, I can use the condional if ( has_post_format('gallery') ) because the format ‘gallery’ is standard.

In short, post format are a sort of categories with standard term names, that exist to help theme developers (expecially ones that sell or distribuite themes) to stylize posts depending on their content in a way that is shared among the thousands of themes that exist for WP: even if a user switch theme, the post will be stylized in right way if both themes support post format.

It’s important to note that post format can be assigned only to standard posts, not to CPT.

In your case, the book is not one of the 9 terms, so you can exlude post format.

Now, going to the choose custom taxonomies vs custom post types.

First of all, you shouldn’t decide the structure of your site based on url, on the countrary, you should adjust your urls to “mirror” as close as possible the site structure.

Said that, you should think what are taxonomies and what are post types.

Posts, in general, are information containers. The post types are intended to organize this informations into types. Taxonomies can be used to group togheter informations of same type or different types that share a characteristic.

In general one information can be only of one type but can have different characteristics: the type in WordPress should be handled via post types, the characteristics via taxonomies.

In your case, book is a type of information. That have some characteristic. One is the subject, that correctly you want to handle via taxonomy, in fact a book can have more that one subject, but cannot be a Book and at the same time a News that is another type of information.

In conclusion, you should use a CPT for Book, and group them into subject using a taxonomy.

Regarding the urls I think that the standard example.com/books/ for book archive and example.com/books/a-book-name for the single book can be optimal, unless you have particular needs.

tech