Wordpress 自定义分类下拉列表,包含子级和层次结构



我正在为我的场地项目使用wordpress的属性主题。在那里,我得到了一个基于自定义分类法的搜索,我需要帮助的是位置。

最初我有国家和城市 - 但在发现我似乎无法根据用户为国家/地区选择的内容填充城市之后(虽然 AJAX,但即使在上网几个小时后我也无法弄清楚该怎么做)。我看到一个帖子说要把它变成一个分类法,我称之为位置,现在这是一个分层分类法,有一个城市作为孩子

我遇到的问题是,对于搜索,我现在有一个下拉菜单,它显示城市而不是层次结构!

所以它看起来像(例如)

巴西
佛罗伦萨
意大利
墨西哥
美国

它应该显示为

巴西
意大利
-佛罗伦萨
墨西哥
美国

下拉列表都像

<div class="left">
    <label for="ct_state"><?php _e('Location', 'contempo'); ?></label>
    <?php ct_search_form_select('country'); ?>
</div>

调用的函数是

function ct_search_form_select($name, $taxonomy_name = null) {
    global $search_values;
    if (!$taxonomy_name) {
        $taxonomy_name = $name;
    }
    ?>
    <select id="ct_<?php echo $name; ?>" name="ct_<?php echo $name; ?>">
        <option value="0"><?php _e('Any', 'contempo'); ?></option>
        <?php foreach( get_terms($taxonomy_name, 'hide_empty=0') as $t ) : ?>
            <?php if ($search_values[$name] == $t->slug) { $selected = 'selected="selected" '; } else { $selected = ''; } ?>
            <option <?php echo $selected; ?>value="<?php echo $t->slug; ?>"><?php echo $t->name; ?></option>
        <?php endforeach; ?>
    </select>
    <?php
}

如您所见,它还拉取一个名为$search_values的变量,这是im将所有选择编译到搜索查询中的方式。任何地方都有快速解决方案吗?我尝试过做不同的功能,但我无法让任何东西工作:(请有人帮我

非常感谢尼克·

有一个朋友来帮助我解决这个问题 - 以防其他人遇到这个问题,为这些下拉菜单创建了一个新功能

function ct_location_form_select($name, $tax_name = null, $parent = null) {
    global $search_values;
    if (!$tax_name) {
        $tax_name = $name;
    }
    $tax_array['hide_empty'] = 0;
    $tax_array['parent'] = ( $parent ) ? $parent : 0;
    $tax_terms = get_terms( $tax_name, $tax_array );
    if ($parent) {
        foreach( $tax_terms as $t ) {
            if ( $search_values[$name] == $t->slug ) { $selected = 'selected="selected"'; } else { $selected = ''; }
            ?>
            <option value="<?php echo $t->slug; ?>" <?php echo $selected; ?>><?php echo get_option_spaces( $tax_name, $t->term_id ) . $t->name; ?></option>
            <?php
            if ( get_term_children( $t->term_id, $tax_name ) ) {
                ct_location_form_select( $name, $tax_name, $t->term_id );
            }
        }
    } else {
    ?>
    <select id='ct_<?php echo $name; ?>' name='ct_<?php echo $name; ?>'>
    <option value="0"><?php _e('Any', 'contempo'); ?></option>
    <?php foreach( $tax_terms as $t ) { ?>
    <?php if ( $search_values[$name] == $t->slug ) { $selected = 'selected="selected" '; } else { $selected = ''; } ?>
    <option <?php echo $selected; ?>value="<?php echo $t->slug; ?>"><?php echo $t->name; ?></option>
    <?php
            if ( get_term_children( $t->term_id, $tax_name ) ) {
                ct_location_form_select( $name, $tax_name, $t->term_id );
            }
        }
    ?>
    </select>
    <?php
    }
}

干杯!

最新更新