name = 'select'; $this->label = __("Select",'acf'); $this->category = __("Choice",'acf'); $this->defaults = array( 'multiple' => 0, 'allow_null' => 0, 'choices' => array(), 'default_value' => '' ); // do not delete! parent::__construct(); // extra //add_filter('acf/update_field/type=select', array($this, 'update_field'), 5, 2); add_filter('acf/update_field/type=checkbox', array($this, 'update_field'), 5, 2); add_filter('acf/update_field/type=radio', array($this, 'update_field'), 5, 2); } /* * create_field() * * Create the HTML interface for your field * * @param $field - an array holding all the field's data * * @type action * @since 3.6 * @date 23/01/13 */ function create_field( $field ) { // vars $optgroup = false; // determine if choices are grouped (2 levels of array) if( is_array($field['choices']) ) { foreach( $field['choices'] as $k => $v ) { if( is_array($v) ) { $optgroup = true; } } } // value must be array if( !is_array($field['value']) ) { // perhaps this is a default value with new lines in it? if( strpos($field['value'], "\n") !== false ) { // found multiple lines, explode it $field['value'] = explode("\n", $field['value']); } else { $field['value'] = array( $field['value'] ); } } // trim value $field['value'] = array_map('trim', $field['value']); // multiple select $multiple = ''; if( $field['multiple'] ) { // create a hidden field to allow for no selections echo ''; $multiple = ' multiple="multiple" size="5" '; $field['name'] .= '[]'; } // html echo ''; } /* * create_options() * * Create extra options for your field. This is rendered when editing a field. * The value of $field['name'] can be used (like bellow) to save extra data to the $field * * @type action * @since 3.6 * @date 23/01/13 * * @param $field - an array holding all the field's data */ function create_options( $field ) { $key = $field['name']; // implode choices so they work in a textarea if( is_array($field['choices']) ) { foreach( $field['choices'] as $k => $v ) { $field['choices'][ $k ] = $k . ' : ' . $v; } $field['choices'] = implode("\n", $field['choices']); } ?>


'textarea', 'class' => 'textarea field_option-choices', 'name' => 'fields['.$key.'][choices]', 'value' => $field['choices'], )); ?>

'textarea', 'name' => 'fields['.$key.'][default_value]', 'value' => $field['default_value'], )); ?> 'radio', 'name' => 'fields['.$key.'][allow_null]', 'value' => $field['allow_null'], 'choices' => array( 1 => __("Yes",'acf'), 0 => __("No",'acf'), ), 'layout' => 'horizontal', )); ?> 'radio', 'name' => 'fields['.$key.'][multiple]', 'value' => $field['multiple'], 'choices' => array( 1 => __("Yes",'acf'), 0 => __("No",'acf'), ), 'layout' => 'horizontal', )); ?> value foreach($field['choices'] as $choice) { if(strpos($choice, ' : ') !== false) { $choice = explode(' : ', $choice); $new_choices[ trim($choice[0]) ] = trim($choice[1]); } else { $new_choices[ trim($choice) ] = trim($choice); } } } // update choices $field['choices'] = $new_choices; return $field; } } new acf_field_select(); ?>