0

分類用語(第3レベルの用語)を含むドロップダウンメニューがあり、用語が選択されたときに、ajaxリクエストを通じてその親用語を表示したいと思います。しかし、何らかの理由で、親用語の値ではなく「0」の値を取得します。誰かが私のコードを助けてチェックし、私がここで欠けているものを見ることができますか?

$("select#districts").change(function() {
        $.ajax({
            url: '/metrics/wp-admin/admin-ajax.php',
            type: 'GET',
            data: {action: 'county_request', term_id : $(this).children(":selected").prop("value")},
            dataType: 'html',
            success: function(data){
                $('#district-county').html(data);
            }
        });
});

//親用語を取得します

function ajax_handle_request(){
    $output = ajax_get_parent_term_by_id($_REQUEST['term_id']);
    return $output;
}
add_action('wp_ajax_nopriv_county_request', 'ajax_handle_request');
add_action('wp_ajax_county_request', 'ajax_handle_request');

function ajax_get_parent_term_by_id($term_id){
    $parent_term  = get_term_by( 'id', $term_id->parent, 'state');
    return $parent_term;
}
4

2 に答える 2

1

ajax_get_parent_term_by_id 関数が値を返さないことがわかりました。次のように変更したところ、機能するようになりました。

function ajax_get_parent_term_by_id($term_id){
    $term = get_term_by( 'id', $term_id, 'taxonomy' );
    $parent_term = get_term($term->parent, 'taxonomy' );
    return $parent_term;
}
于 2012-12-01T11:14:25.100 に答える
1

スクリプトの実行を終了するには、結果を出力してからdie()orを実行する必要があります。exit()これを念頭に置いて、コードは次のようになります。

// get parent terms

function ajax_handle_request(){
    $output = ajax_get_parent_term_by_id($_REQUEST['term_id']);
    echo $output && ! is_wp_error( $output ) ? $output->name : '';
    exit();
}
add_action('wp_ajax_nopriv_county_request', 'ajax_handle_request');
add_action('wp_ajax_county_request', 'ajax_handle_request');

function ajax_get_parent_term_by_id($term_id){
    $parent_term  = get_term_by( 'id', $term_id->parent, 'state');
    return $parent_term;
}

これは、要求された用語の名前を返します。に他のものを表示したい場合は、 を表示したいものに#district-county変更しecho $output && ! is_wp_error( $output ) ? $output->name : '';てください。

于 2012-11-30T14:32:36.727 に答える