1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
<?php
class CMB2_Type_Taxonomy_Select_Hierarchical extends CMB2_Type_Taxonomy_Select {
protected $parent = 0;
protected $level = 0;
public function render() {
return $this->rendered(
$this->types->select( array(
'options' => $this->get_term_options(),
), 'taxonomy_select_hierarchical' )
);
}
public function select_option( $args = array() ) {
if ( $this->level > 0 ) {
$args['label'] = str_repeat( ' ', $this->level ) . $args['label'];
}
$option = parent::select_option( $args );
$children = $this->build_children( $this->current_term, $this->saved_term );
if ( ! empty( $children ) ) {
$option .= $children;
}
return $option;
}
public function child_option_output( $terms, $saved ) {
$this->level++;
$output = $this->loop_terms( $terms, $saved );
$this->level--;
return $output;
}
}