<form action="/wp-admin/admin-ajax.php" method="POST" id="filter">
<select name="post-filters"><option value="">Select post_type</option>
<option value="first_post_type">first_post_type</option>
<option value="second_first_type">second_first_type</option>
</select>
<button>Apply</button>
<input type="hidden" name="action" value="myfilter">
</form>
<div id="response"></div>
<script>
jQuery(function($){
$('#filter').submit(function(){
var filter = $('#filter');
$.ajax({
url:filter.attr('action'),
data:filter.serialize(),
type:filter.attr('method'),
beforeSend:function(xhr){
filter.find('button').text('Processing...');
},
success:function(data){
filter.find('button').text('Apply filter');
$('#response').html(data);
}
});
return false;
});
});
</script>
add_action('wp_ajax_postfilter', 'function_filter');
add_action('wp_ajax_myfilter', 'function_filter');
function function_filter(){
if( isset( $_POST['post-filters'] ) )
$args['tax_query'] = array(
array(
'taxonomy' => 'new_tax',
'field' => 'id',
'post_type' => $_POST['post-filters']
)
);
$query = new WP_Query( $args );
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
echo '<h4>' . $query->post->post_title . '</h4>';
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
die();
}