Всё очень просто!)
В селект лучше писать ID категории. Вот схема
<form action="/" method="get" role="search">
<select name="inventar">
<?php
$categories = get_categories(array(
'child_of' => 2 // если не знаешь ID то - get_category_by_slug( 'inventar' )->cat_ID
));
foreach($categories as $category): ?>
<option value = "<?=$category->cat_ID ?>"><?=$category->cat_name ?></option>
<?php endforeach ?>
</select>
<select name="park">
<?php
$categories = get_categories(array(
'child_of' => 3 // get_category_by_slug( 'park' )->cat_ID
));
foreach($categories as $category): ?>
<option value = "<?=$category->cat_ID ?>"><?=$category->cat_name ?></option>
<?php endforeach ?>
</select>
<input type="hidden" name="source" value="bb">
<button type="submit">Начать поиск</button>
</form>
И обрабатывать как-то так (я ловил через твоё скрытое поле source)
add_filter('pre_get_posts', function($query){
if(isset($_GET['source']) && $_GET['source'] == 'bb'){
$query->set( 'category__and', array(
$_GET['inventar'],
$_GET['park']
) );
}
});
То есть выведутся записи, расположенные одновременно в обоих искомых категориях.
Это схема, без проверок, selected и тд. Сделайте это самостоятельно!))