Пользовательская цена продукта в Woocommerce

Иногда нужно чтобы продукт в Woocommerce имел не заданную стоимость продукта, а ту которую ввел пользователь, например для сбора пожертвований.

Для этого нужно создать для каждого элемента дополнительное поле (например custom_price) с новой ценой, и при подсчете стоимости корзины с помощью хука woocommerce_before_calculate_totals установить для каждого элемента корзины стоимость из дополнительного поля с новой ценой.

В файле темы functions.php создаем следующую функцию:

 

Где $_POST[‘custom_price’] — это пользовательская цена товара.

Данную функцию легко переделать например для продукта у которого цена рассчитывается в зависимости от ширины и высоты.