acf_add_block_meta_values()
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 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;
}