ajax + wp_Query на пальцах досконально не объяснить
но примерно так
получаем категории в селект
$terms = get_terms("category_tow");
$count = count($terms);
if($count > 0){
echo "<select id='category-tow'>";
foreach ($terms as $term) {
echo "<option value='" . $term->term_id ." '>" . $term->name. "</option>";
}
echo "</select>";
}
аналогично для брендов
дальше запуск по смене селекта
$('#category-tow').change(function(){
var data={
action: 'sort_action',
security: Ajax.security,
cat : $(this).val()
}
$.post(Ajax.ajaxurl, data, function (response) {
тут разбираете response и пишете в нужные места
});
});
обработчик
add_action( 'wp_ajax_sort_action', 'sort_action_callback' );
add_action( 'wp_ajax_nopriv_sort_action', 'sort_action_callback' );
function sort_action_callback() {
check_ajax_referer( 'my-special-string', 'security' );
$data_brend = $_POST['cat'];
$args = array(
'post_type' => 'products',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'category_tow',
'field' => 'id',
'terms' => array($data_brend)
),
array(
'taxonomy' => 'brend_tow'
)
),
);
my_query = new WP_Query($args);
/* тут ваш цикл */
// при этом для каждого поста получаете бренды и пишете их в отдельный массив
echo <div id="loop"> тут результат работы цикла</div>
echo <div id="select"> тут разобранный на опции селекта массив брендов </div>
die();
}