name = 'taxonomy'; $this->label = __("Taxonomy",'acf'); $this->category = __("Relational",'acf'); $this->defaults = array( 'taxonomy' => 'category', 'field_type' => 'checkbox', 'allow_null' => 0, 'load_save_terms' => 0, 'multiple' => 0, 'return_format' => 'id' ); // do not delete! parent::__construct(); } /* * load_value() * * This filter is appied to the $value after it is loaded from the db * * @type filter * @since 3.6 * @date 23/01/13 * * @param $value - the value found in the database * @param $post_id - the $post_id from which the value was loaded from * @param $field - the field array holding all the field options * * @return $value - the value to be saved in te database */ function load_value( $value, $post_id, $field ) { if( $field['load_save_terms'] ) { $value = array(); $terms = get_the_terms( $post_id, $field['taxonomy'] ); if( is_array($terms) ){ foreach( $terms as $term ){ $value[] = $term->term_id; }} } return $value; } /* * update_value() * * This filter is appied to the $value before it is updated in the db * * @type filter * @since 3.6 * @date 23/01/13 * * @param $value - the value which will be saved in the database * @param $field - the field array holding all the field options * @param $post_id - the $post_id of which the value will be saved * * @return $value - the modified value */ function update_value( $value, $post_id, $field ) { // vars if( is_array($value) ) { $value = array_filter($value); } if( $field['load_save_terms'] ) { // Parse values $value = apply_filters( 'acf/parse_types', $value ); wp_set_object_terms( $post_id, $value, $field['taxonomy'], false ); } return $value; } /* * format_value_for_api() * * This filter is appied to the $value after it is loaded from the db and before it is passed back to the api functions such as the_field * * @type filter * @since 3.6 * @date 23/01/13 * * @param $value - the value which was loaded from the database * @param $post_id - the $post_id from which the value was loaded * @param $field - the field array holding all the field options * * @return $value - the modified value */ function format_value_for_api( $value, $post_id, $field ) { // no value? if( !$value ) { return $value; } // temp convert to array $is_array = true; if( !is_array($value) ) { $is_array = false; $value = array( $value ); } // format if( $field['return_format'] == 'object' ) { foreach( $value as $k => $v ) { $value[ $k ] = get_term( $v, $field['taxonomy'] ); } } // de-convert from array if( !$is_array && isset($value[0]) ) { $value = $value[0]; } // Note: This function can be removed if not used return $value; } /* * create_field() * * Create the HTML interface for your field * * @type action * @since 3.6 * @date 23/01/13 * * @param $field - an array holding all the field's data */ function create_field( $field ) { // vars $single_name = $field['name']; // multi select? if( $field['field_type'] == 'multi_select' ) { $field['multiple'] = 1; $field['field_type'] = 'select'; $field['name'] .= '[]'; } elseif( $field['field_type'] == 'checkbox' ) { $field['name'] .= '[]'; } // value must be array! if( !is_array($field['value']) ) { $field['value'] = array( $field['value'] ); } // vars $args = array( 'taxonomy' => $field['taxonomy'], 'hide_empty' => false, 'style' => 'none', 'walker' => new acf_taxonomy_field_walker( $field ), ); if($field['sort_order'] == 'alpha'){ $sort_args = array( 'orderby' => 'name', 'order' => 'ASC', ); array_push($args, $sort_args); }else if($field['sort_order'] == 'alpha_desc'){ $sort_args = array( 'orderby' => 'name', 'order' => 'DESC', ); $args = array_merge($args, $sort_args); } $args = apply_filters('acf/fields/taxonomy/wp_list_categories', $args, $field ); ?>