name = 'select'; $this->label = __( 'Select', 'cfs' ); $this->select2_inserted = false; } function html( $field ) { $multiple = ''; $field->input_class = empty( $field->input_class ) ? '' : $field->input_class; // Multi-select if ( isset( $field->options['multiple'] ) && '1' == $field->options['multiple'] ) { $multiple = ' multiple'; $field->input_class .= ' multiple'; } // Select2 if ( isset( $field->options['select2'] ) && '1' == $field->options['select2'] ) { $field->input_class .= ' select2'; add_action( 'admin_footer', array( $this, 'select2_code' ) ); } // Select boxes should return arrays (unless "force_single" is true) if ( '[]' != substr( $field->input_name, -2 ) && empty( $field->options['force_single'] ) ) { $field->input_name .= '[]'; } ?> select2_inserted ) { return; } echo ''; echo ''; // Don't insert select2 code twice $this->select2_inserted = true; } function input_head( $field = null ) { ?> options['choices'] ) && is_array( $field->options['choices'] ) ) { foreach ( $field->options['choices'] as $choice_key => $choice_val ) { $field->options['choices'][ $choice_key ] = "$choice_key : $choice_val"; } $field->options['choices'] = implode( "\n", $field->options['choices'] ); } else { $field->options['choices'] = ''; } ?>

create_field( array( 'type' => 'textarea', 'input_name' => "cfs[fields][$key][options][choices]", 'value' => $this->get_option( $field, 'choices' ), ) ); ?> create_field( array( 'type' => 'true_false', 'input_name' => "cfs[fields][$key][options][multiple]", 'input_class' => 'true_false', 'value' => $this->get_option( $field, 'multiple' ), 'options' => array( 'message' => __( 'This is a multi-select field', 'cfs' ) ), ) ); ?> create_field(array( 'type' => 'true_false', 'input_name' => "cfs[fields][$key][options][select2]", 'input_class' => 'true_false', 'value' => $this->get_option($field, 'select2'), 'options' => array('message' => __('Render this field with Select2', 'cfs')), )); ?> create_field( array( 'type' => 'true_false', 'input_name' => "cfs[fields][$key][options][required]", 'input_class' => 'true_false', 'value' => $this->get_option( $field, 'required' ), 'options' => array( 'message' => __( 'This is a required field', 'cfs' ) ), ) ); ?> options['choices']; // Return an associative array (value, label) if ( is_array( $value ) ) { foreach ( $value as $val ) { $value_array[ $val ] = isset( $choices[ $val ] ) ? $choices[ $val ] : $val; } } return $value_array; } function prepare_value( $value, $field = null ) { return $value; } function pre_save_field( $field ) { $new_choices = array(); $choices = trim( $field['options']['choices'] ); if ( ! empty( $choices ) ) { $choices = str_replace( "\r\n", "\n", $choices ); $choices = str_replace( "\r", "\n", $choices ); $choices = ( false !== strpos( $choices, "\n" ) ) ? explode( "\n", $choices ) : (array) $choices; foreach ( $choices as $choice ) { $choice = trim( $choice ); if ( false !== ( $pos = strpos( $choice, ' : ' ) ) ) { $array_key = substr( $choice, 0, $pos ); $array_value = substr( $choice, $pos + 3 ); $new_choices[ $array_key ] = $array_value; } else { $new_choices[ $choice ] = $choice; } } } $field['options']['choices'] = $new_choices; return $field; } }