简体   繁体   中英

WordPress searching by custom taxonomy

I am using the following code, which allows me to create a dropdown list of terms in my custom taxonomy for use in searching.

This code works just fine for creating the dropdown and using it to search. The problem is, I can't get it to keep the selected term "selected" in the select box on the results page.

I copied the code from the answer to this question here ( https://wordpress.org/support/topic/plugin-events-manager-searching-by-custom-taxonomy#post-3792604 ), which should add the selected class to the searched term -- but it's not doing anything.

Can you tell by my code what I've done wrong? The issue appears to be with the line $search_values['grades'] == $term->slug. My custom taxonomy is 'grades'.

function get_terms_dropdown($taxonomies, $args)
{
    global $search_values;

    $myterms = get_terms($taxonomies, $args);
    $output = "";
    foreach ($myterms as $term) {
        $root_url = get_bloginfo('url');
        $term_taxonomy = $term->taxonomy;
        $term_slug = $term->slug;
        $term_name = $term->name;
        $value = $term->term_id;
        if ($search_values['grades'] == $term->slug) {
            $selected = 'selected="selected" ';
        } else {
            $selected = '';
        }
        $output .= "<option value='" . $value . "' " . $selected . ">" . $term_name . "</option>";
    }

    return $output;
}

Try using just selected which generating the option like below instead of selected = 'selected'. Should solve it: http://www.w3schools.com/tags/att_option_selected.asp

function get_terms_dropdown($taxonomies, $args)
{
    global $search_values;

    $myterms = get_terms($taxonomies, $args);
    $output = "";
    foreach ($myterms as $term) {
        $root_url = get_bloginfo('url');
        $term_taxonomy = $term->taxonomy;
        $term_slug = $term->slug;
        $term_name = $term->name;
        $value = $term->term_id;
        if ($search_values['grades'] == $term->slug) {
            $selected = 'selected';
        } else {
            $selected = '';
        }
        $output .= "<option value='" . $value . "' " . $selected . ">" . $term_name . "</option>";
    }

    return $output;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM