В методе widget()
вашего класса виджетов вам потребуется настроить пользовательский запрос для отображения книг на основе выбранной "категории".
Поскольку вы не опубликовали ни одного сообщениякод для вашей формы виджета, я предполагаю, что вы сохраняете идентификатор выбранной категории в поле category_id
при сохранении виджета. Исходя из этого предположения, вы будете использовать этот идентификатор категории для запроса сообщений в вашем типе сообщений books , чтобы виджет мог отображать их везде, где виджет находится во внешнем интерфейсе.
<?php
class MyWidget extends WP_Widget
{
public function __construct(){}
public function widget($args, $instance)
{
extract($args);
$queryArgs = [
'post_type' => 'book',
'tax_query' => [
[
'taxonomy' => 'custom_taxonomy_code', // this would be the code for the custom taxonomy that you registered, i.e. your "category"
'field' => 'term_id',
'terms' => $instance['category_id'] // this assumes that your widget form saved the selected category ID to a 'category_id' field
]
],
'posts_per_page' => 5 // or however many books you want to list
];
$postsQuery = new WP_Query($queryArgs);
if(!$postsQuery->have_posts())
{
print 'No books found.';
}
else
{
// display your books here
}
}
public function update($newInstance, $oldInstance){}
public function form($instance){}
}