acf_add_block_meta_values()ACF 6.3

Loads ACF field values from the post meta if the block is configured to do so.

Хуков нет.

Возвращает

Массив.

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

acf_add_block_meta_values( $block, $post_id );
$block(массив) (обязательный)
The block to get values for.
$post_id(int) (обязательный)
The ID of the post to retrieve meta from.

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

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

Код acf_add_block_meta_values() ACF 6.4.2

function acf_add_block_meta_values( $block, $post_id ) {
	// Bail if the block already has data (i.e. previewing an update).
	if ( ! is_array( $block ) || ! empty( $block['data'] ) ) {
		return $block;
	}

	// Bail if block doesn't load from meta.
	if ( ! acf_block_uses_post_meta( $block ) ) {
		return $block;
	}

	// Bail if we don't have a post ID or block ID.
	if ( empty( $post_id ) || empty( $block['id'] ) ) {
		return $block;
	}

	$fields = acf_get_block_fields( $block );

	if ( empty( $fields ) ) {
		return $block;
	}

	$values   = array();
	$store    = acf_get_store( 'values' );
	$block_id = acf_ensure_block_id_prefix( $block['id'] );

	foreach ( $fields as $field ) {
		$value = acf_get_value( $post_id, $field );

		// Make sure we got a value (i.e. $allow_load = true).
		if ( ! $store->has( "{$post_id}:{$field['name']}" ) ) {
			continue;
		}

		$store->set( "{$block_id}:{$field['name']}", $value );

		$values[ $field['name'] ]       = $value;
		$values[ '_' . $field['name'] ] = $field['key']; // TODO: Is there a better way to generate this?
	}

	$block['data'] = $values;

	acf_set_data( $block_id . '_loaded_meta_values', true );

	return $block;
}