acf_field_range::render_field()publicACF 3.6

Create the HTML interface for your field

Метод класса: acf_field_range{}

Хуков нет.

Возвращает

null. Ничего (null).

Использование

$acf_field_range = new acf_field_range();
$acf_field_range->render_field( $field );
$field (обязательный)
-

Список изменений

С версии 3.6 Введена.

Код acf_field_range::render_field() ACF 6.0.4

function render_field( $field ) {

	// vars
	$atts  = array();
	$keys  = array( 'type', 'id', 'class', 'name', 'value', 'min', 'max', 'step' );
	$keys2 = array( 'readonly', 'disabled', 'required' );
	$html  = '';

	// step
	if ( ! $field['step'] ) {
		$field['step'] = 1;
	}

	// min / max
	if ( ! $field['min'] ) {
		$field['min'] = 0;
	}
	if ( ! $field['max'] ) {
		$field['max'] = 100;
	}

	// allow for prev 'non numeric' value
	if ( ! is_numeric( $field['value'] ) ) {
		$field['value'] = 0;
	}

	// constrain within max and min
	$field['value'] = max( $field['value'], $field['min'] );
	$field['value'] = min( $field['value'], $field['max'] );

	// atts (value="123")
	foreach ( $keys as $k ) {
		if ( isset( $field[ $k ] ) ) {
			$atts[ $k ] = $field[ $k ];
		}
	}

	// atts2 (disabled="disabled")
	foreach ( $keys2 as $k ) {
		if ( ! empty( $field[ $k ] ) ) {
			$atts[ $k ] = $k;
		}
	}

	// remove empty atts
	$atts = acf_clean_atts( $atts );

	// open
	$html .= '<div class="acf-range-wrap">';

	// prepend
	if ( $field['prepend'] !== '' ) {
		$html .= '<div class="acf-prepend">' . acf_esc_html( $field['prepend'] ) . '</div>';
	}

	// range
	$html .= acf_get_text_input( $atts );

	// Calculate input width based on the largest possible input character length.
	// Also take into account the step size for decimal steps minus - 1.5 chars for leading "0.".
	$len = max(
		strlen( strval( $field['min'] ) ),
		strlen( strval( $field['max'] ) )
	);
	if ( floatval( $atts['step'] ) < 1 ) {
		$len += strlen( strval( $field['step'] ) ) - 1.5;
	}

		// input
		$html .= acf_get_text_input(
			array(
				'type'  => 'number',
				'id'    => $atts['id'] . '-alt',
				'value' => $atts['value'],
				'step'  => $atts['step'],
				// 'min' => $atts['min'], // removed to avoid browser validation errors
				// 'max' => $atts['max'],
				'style' => 'width: ' . ( 1.8 + $len * 0.7 ) . 'em;',
			)
		);

		// append
	if ( $field['append'] !== '' ) {
		$html .= '<div class="acf-append">' . acf_esc_html( $field['append'] ) . '</div>';
	}

	// close
	$html .= '</div>';

	// return
	echo $html;
}