0

我正在为基于场地的项目使用 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 的变量,这就是我将所有选择编译成搜索查询的方式。有没有快速解决这个问题的地方?我试过做不同的功能,但我什么都做不了:(请有人帮我

非常感谢尼基

4

1 回答 1

0

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

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
    }
}

干杯!

于 2012-08-13T07:10:42.130 回答