Функция, увеличивающая значение acf-поля на 1

При разработке игровых механик часто нужно, чтобы один из параметров изменился на 1. Да, это тривиальная задача, которая решается в 3 действия:

  • Получить текущее значение из базы
  • Увеличить значение на 1
  • Сохранить новое значение

Добавив в вашу тему или плагин новую функцию:

function increament_field($fieldname,$post_id, $min=0, $max=false) {
	$result = get_field($fieldname, $post_id);

	if (is_numeric($result)) {
		$result++;
		
		//Проверяем не превышено ли максимальное значение	
		if ( is_numeric($max) ) $result = min($result, $max);	
			
		update_field($fieldname, $result, $post_id);
		return $result;
	
	}
	else {
		//Если значение поля не было задано, применяем минимальное значение
		$result = $min;
		$result++;
		update_field($fieldname, $result, $post_id);
		return array('status' => 'ok', 'result' => $result);
	}
}

Вы сделаете ваш код более элегантным

Было:

$game_step = get_field('game_step',$post_id);
$game_step++;
update_field('game_step', $game_step, $post_id);

Стало:

increament_field('game_step',$post_id);

Добавить комментарий

Ваш адрес email не будет опубликован.