get_sub_field_object()ACF 3.5.8.1

This function is used inside a 'has_sub_field' while loop to return a sub field object

Хуков нет.

Возвращает

Разное.

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

get_sub_field_object( $selector, $format_value, $load_value, $escape_html );
$selector(строка) (обязательный)
The field name or key.
$format_value(true|false)
Whether to format the field value.
По умолчанию: true
$load_value(true|false)
Whether to load the field value.
По умолчанию: true
$escape_html(true|false)
Should the field return a HTML safe formatted value.
По умолчанию: false

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

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

Код get_sub_field_object() ACF 6.4.2

function get_sub_field_object( $selector, $format_value = true, $load_value = true, $escape_html = false ) {

	$row = acf_get_loop( 'active' );

	// bail early if no row
	if ( ! $row ) {
		return false;
	}

	// attempt to find sub field
	$sub_field = get_row_sub_field( $selector );

	// bail early if no sub field
	if ( ! $sub_field ) {
		return false;
	}

	// load value
	if ( $load_value ) {
		$sub_field['value'] = get_row_sub_value( $sub_field['key'] );
	}

	// escape html is only compatible when formatting the value too
	if ( ! $format_value && $escape_html ) {
		_doing_it_wrong( __FUNCTION__, __( 'Returning an escaped HTML value is only possible when format_value is also true. The field value has not been returned for security.', 'acf' ), '6.2.6' ); //phpcs:ignore -- escape not required.
		$sub_field['value'] = false;
	}

	// format value
	if ( $load_value && $format_value ) {
		if ( $escape_html ) {
			// return the escaped HTML version if requested.
			if ( acf_field_type_supports( $sub_field['type'], 'escaping_html' ) ) {
				$sub_field['value'] = acf_format_value( $sub_field['value'], $row['post_id'], $sub_field, true );
			} else {
				$new_value = acf_format_value( $sub_field['value'], $row['post_id'], $sub_field );
				if ( is_array( $new_value ) ) {
					$sub_field['value'] = map_deep( $new_value, 'acf_esc_html' );
				} else {
					$sub_field['value'] = acf_esc_html( $new_value );
				}
			}
		} else {
			// get value for field
			$sub_field['value'] = acf_format_value( $sub_field['value'], $row['post_id'], $sub_field );
		}
	}

	// return
	return $sub_field;
}