我正在为我的场地项目使用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
}
}
干杯!