为什么不让城镇成为每个州的孩子呢?分类法可以是位置:
请参见
MikeSchinkel\'s detailed q and a regarding hierarchal taxonomies.
一个比根据所选状态刷新页面更优雅的解决方案是使用ajax和get_term_children
函数或下面概述的自定义$wpdb查询。
将使用jQuery选择的状态传递给后端PHP函数,该函数循环遍历子项数组以构建第二个下拉列表。
下面是一个使用自定义$wpdb查询的快速示例:
PHP后端函数:
add_action( \'wp_ajax_nopriv_get_child\', \'ajax_get_children\' );
function ajax_get_children() {
global $wpdb;
$parent = $_POST[\'parent\'];
$child_string = "";
$results = $wpdb->get_results ( "SELECT t.term_id, t.name FROM $wpdb->term_taxonomy tt, $wpdb->terms t, $wpdb->term_taxonomy tt2 WHERE tt.parent = $parent AND tt.taxonomy = \'category\' AND t.term_id = tt.term_id AND tt2.parent = tt.term_id GROUP BY t.term_id, t.name HAVING COUNT(*) > 0 ORDER BY t.term_order ASC" );
foreach ( $results as $row ) {
$child_string = $child_string . "<option value=\'$row->term_id\'>$row->name</option>";
}
echo $child_string;
die(1);
}
jQuery:
jQuery(document).ready(function() {
jQuery("#div-id-of-dropdown").select(function(){
jQuery( "#loading-animation").show();
var termID = jQuery("#parent-term :selected").val();
jQuery.ajax({
type: \'POST\',
url: ajaxurl,
data: {"action": "get_child", parent: termID },
success: function(response) {
jQuery("#empty-div-to-load-child-terms").html(response);
jQuery("#loading-animation").hide();
return false;
}
});
});
});
您必须修改html以匹配上述代码。选择状态后,WordPress将加载子“towns”
Edit忘了提到jQuery中的ajaxurl变量将不会被定义。阅读using AJAX in plugins 获取方法以及其他有用信息。