Вы спутали две задачи в одну.
Вот это должно быть просто в functions.php:
add_image_size( 'book_thumbnail', 320 );
function new_image_sizes( $sizes ) {
return array_merge( $sizes, array(
'book_thumbnail' => 'Книги',
) );
}
add_filter( 'image_size_names_choose', 'new_image_sizes' );
т.к. это обьявление кастомного размера миниатюр, которое должно срабатывать в самом начале init' а шаблона вордпресса.
А вот вывод уже с проверкой через is_singular( 'book' ) - это другая история.
Вы спутали декларацию размера и непосредственный вывод картинки.