ACF\Blocks

Bindings::get_valuepublicACF 6.2.8

Handle returing the block binding value for an ACF meta value.

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

Возвращает

Строку|null. The block binding value or an empty string on failure.

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

$Bindings = new Bindings();
$Bindings->get_value( $source_attrs, $block_instance, $attribute_name );
$source_attrs(массив) (обязательный)
An array of the source attributes requested.
$block_instance(WP_Block) (обязательный)
The block instance.
$attribute_name(строка) (обязательный)
The block's bound attribute name.

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

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

Код Bindings::get_value() ACF 6.4.2

public function get_value( array $source_attrs, \WP_Block $block_instance, string $attribute_name ) {
	if ( ! isset( $source_attrs['key'] ) || ! is_string( $source_attrs['key'] ) ) {
		$value = '';
	} else {
		$field = get_field_object( $source_attrs['key'], false, true, true, true );

		if ( ! $field ) {
			return '';
		}

		if ( ! acf_field_type_supports( $field['type'], 'bindings', true ) ) {
			if ( is_preview() ) {
				return apply_filters( 'acf/bindings/field_not_supported_message', '[' . esc_html__( 'The requested ACF field type does not support output in Block Bindings or the ACF shortcode.', 'acf' ) . ']' );
			} else {
				return '';
			}
		}

		if ( isset( $field['allow_in_bindings'] ) && ! $field['allow_in_bindings'] ) {
			if ( is_preview() ) {
				return apply_filters( 'acf/bindings/field_not_allowed_message', '[' . esc_html__( 'The requested ACF field is not allowed to be output in bindings or the ACF Shortcode.', 'acf' ) . ']' );
			} else {
				return '';
			}
		}

		$value = $field['value'];

		if ( is_array( $value ) ) {
			$value = implode( ', ', $value );
		}

		// If we're not a scalar we'd throw an error, so return early for safety.
		if ( ! is_scalar( $value ) ) {
			$value = null;
		}
	}

	return apply_filters( 'acf/blocks/binding_value', $value, $source_attrs, $block_instance, $attribute_name );
}