Hi, I am using this custom search form that has three different dropdowns that contains a list different taxonomies.
<form role="search" method="get" id="searchform" action="<?php echo bloginfo( 'url' ); ?>">
<input type="hidden" name="" value="" id="" />
<?php echo my_dropdown('genre', 'genre'); ?>
<?php echo my_dropdown('type', 'type'); ?>
<?php echo my_dropdown('ayear', 'ayear'); ?>
<input type="submit" id="searchsubmit" value="Submit" />
</form>
When submitting the form, it's returning the ID's rather than the slugs. This is my function,
<?php
function my_dropdown($name, $taxonomy = 'category') {
$defaults = array(
'taxonomy' => $taxonomy,
'id' => $name,
'name' => $name,
'show_option_none' => ' - Select - ',
'selected' => get_query_var($name)
);
wp_dropdown_categories($defaults);
}
add_action('pre_get_posts', 'my_customsearch');
function my_customsearch($query) {
if(! $query->is_main_query() || ! $query->is_search )
return;
$tax_query = array();
$genre = (int) get_query_var('genre');
$type = (int) get_query_var('type');
$ayear = (int) get_query_var('ayear');
// first dropdown
if (! empty($genre) && $genre > 0) {
$tax_query[] = array(
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => $genre
);
}
// second dropdown
if (! empty($type) && $type > 0) {
$tax_query[] = array(
'taxonomy' => 'type',
'field' => 'slug',
'terms' => $type
);
}
// third dropdown
if (! empty($ayear) && $ayear > 0) {
$tax_query[] = array(
'taxonomy' => 'ayear',
'field' => 'slug',
'terms' => $ayear
);
}
if ( sizeof($tax_query) > 0 ) {
$tax_query['relation'] = 'AND';
$query->set( 'tax_query', $tax_query );
}
}
// add my custom query vars
add_filter('query_vars', 'mycustom_query_vars');
function mycustom_query_vars($query_vars) {
$query_vars[] = 'genre';
$query_vars[] = 'type';
$query_vars[] = 'ayear';
return $query_vars;
}
?>