0

会場ベースのプロジェクトで wordpress のプロパティ テーマを使用しています。カスタム分類法に基づいた検索がありましたが、助けが必要なのは場所です。

最初は国と都市がありましたが、ユーザーが国に対して選択したものに基づいて都市を設定できないことがわかった後 (AJAX はありますが、ネットを何時間もサーフィンした後でもそれを行う方法がわかりません) . 私はそれを場所と呼ばれる1つの分類法にするように言った投稿を見ました。これは現在、子として都市を持つ階層的な分類法です

私が問題を抱えているのは、検索のために、都市を表示しているが階層では表示されていないドロップダウンがあることです!

だからそれは(例えば)のように見えます

ブラジル
フィレンツェ
イタリア
メキシコ
米国

どこに表示すべきか

ブラジル
イタリア
- フィレンツェ
メキシコ
米国

ドロップダウンはすべて次のように呼び出されます

<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 に答える