В общем случае как-то так. Передаете GET или POST параметр с id категории и добавляете к аргументам основного запроса tax_query
get_posts(array(
'post_type' => 'post',
'status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => ( isset( $_GET['category_id'] ) && intval($_GET['category_id']) ) ? intval($_GET['category_id']) : $default_cat_id ,
)
),
)
);