get_fields()ACF 3.6

Возвращает массив со всеми значениями пользовательских полей для определенной записи, пользователя, комментария, термина и так далее.

Функция не очень элегантна и тратит много памяти PHP / SQL-запросов, если вы не используете все значения.

Работает на основе: get_field_objects()

Хуков нет.

Возвращает

(Массив). Ассоциативный массив (field name => field value).

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

get_fields( $post_id, $format_value );
$post_id(mixed)
ID записи (пользователя, рубрики и .д.), для которой нужно получить метаполя.
По умолчанию: false (ID текущей записи в цикле)
$format_value(bool)
Применять ли форматирование, указанное в настройках поля.
По умолчанию: true

Примеры

0

#1 Получим значения метаполей для текущей записи

Отобразим для текущей записи в виде списка все метаполя (имена полей и их значения).

$fields = get_fields();

if( $fields ): ?>
	<ul>
		<?php foreach( $fields as $name => $value ): ?>
			<li><b><?php echo $name; ?></b> <?php echo $value; ?></li>
		<?php endforeach; ?>
	</ul>
<?php endif; ?>
0

#2 Получим значения для разных сущностей

// Получим значения всех метаполей текущей записи.
$fields = get_fields();

// Получим значения всех метаполей записи с ID = 1.
$post_fields = get_fields( 1 );

// Получим значения всех метаполей пользователя с ID = 2.
$user_fields = get_fields( 'user_2' );

// Получим значения всех метаполей термина с ID = 3.
$term_fields = get_fields( 'term_3' );

// Получим значения всех метаполей термина с таксономией category и ID = 3.
$term_fields = get_fields( 'category_3' );

// Получим значения всех метаполей комментария с ID = 4.
$comment_fields = get_fields( 'comment_4' );

// Получим значения всех метаполей всех страниц опций, созданных ACF.
$option_fields = get_fields( 'options' );

// Или так.
$option_fields = get_fields( 'option' );
0

#3 Получим значения метаполей для текущей записи без форматирования

В этом примере показано, как получить все поля (имя и значение) без какого-либо форматирования.

Форматирование относится к тому, как изменяются значения после загрузки из базы данных. Например, значение поля изображения сохраняется в базе данных как просто ID вложения, но может быть возвращено в виде URL-адреса, в зависимости от настроек поля.

В некоторых случаях может быть полезно убедиться, что возвращается только необработанное значение, независимо от настроек поля. Для этого мы используем параметр $format_value.

$fields = get_fields( 123, false );

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

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

Код get_fields() ACF 6.0.4

function get_fields( $post_id = false, $format_value = true ) {

	// vars
	$fields = get_field_objects( $post_id, $format_value );
	$meta   = array();

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

	// populate
	foreach ( $fields as $k => $field ) {

		$meta[ $k ] = $field['value'];

	}

	// return
	return $meta;

}