fields[] = array( 'type' => $field_type, 'args' => $args, ); } /** * Renders all fields currently registered. * * @return string */ public function render_fields() { $output = ''; foreach ( $this->fields as $data ) { $output .= $this->render_field( $data['type'], $data['args'] ); } return $output; } /** * Renders all fields currently registered as a table. * * @return string */ public function render_fields_table() { $output = ''; foreach ( $this->fields as $data ) { $title = ( array_key_exists( 'title', $data['args'] ) ) ? $data['args']['title'] : ''; $output .= ''; } $output .= '
' . $title . ''; $output .= $this->render_field( $data['type'], $data['args'] ); $output .= '
'; return $output; } /** * Renders a single field. * * @param string $field_type The type of field being rendered. * @param array $args The options for the field type. * * @return string */ public function render_field( $field_type, $args ) { $args = wp_parse_args( $args, array( 'name' => '', 'value' => '', 'options' => array(), 'description' => '', 'classes' => '', 'data' => array(), 'multiple' => false, ) ); $output = ''; switch ( $field_type ) { case 'text': $output = sprintf( '', esc_attr( $args['name'] ), esc_attr( $args['classes'] ), esc_attr( $args['value'] ) ); break; case 'hidden': $output = sprintf( '', esc_attr( $args['name'] ), esc_attr( $args['classes'] ), esc_attr( $args['value'] ) ); break; case 'select': $current_value = $args['value']; $output = sprintf( ''; break; case 'select2': $values = array(); $multiple = ( $args['multiple'] ) ? 'multiple ' : ''; $output = sprintf( ''; break; case 'checkbox': $output = sprintf( '%2$s', $args['name'], $args['text'], checked( $args['value'], true, false ) ); break; default: $output = apply_filters( 'wp_stream_form_render_field', $output, $field_type, $args ); break; } $output .= ! empty( $args['description'] ) ? sprintf( '

%s

', $args['description'] ) : null; return $output; } /** * Prepares string with HTML data attributes * * @param array $data List of key/value data pairs to prepare. * @return string */ public function prepare_data_attributes_string( $data ) { $output = ''; foreach ( $data as $key => $value ) { $key = 'data-' . esc_attr( $key ); $output .= $key . '="' . esc_attr( $value ) . '" '; } return $output; } }