Woocommerce программно установить цену, показывая $ 0,00 в корзине

Таким образом, в основном то, что я сделал, это программно изменил цену так, что, если приходит клиент уровня 1, он автоматически вытягивает цену уровня 1 из вставленного пользовательского поля, а затем обрезает знак доллара. Как только это сделано, он меняет цену для человека, вошедшего в систему, без изменения базы данных. Тем не менее, я получаю ошибку «невозможно купить», когда я пытаюсь приобрести продукт. Я изменил продукт, чтобы сделать его покупаемым, и я обнаружил, что цена в корзине составляет 0,00 долларов США.

Вот мой код:

add_filter('woocommerce_get_price', 'custom_price_wanted', 10, 2);
function custom_price_wanted($price, $product) {
if (!is_user_logged_in()) return $price;
if (has_role_wanted('level_1_customers')){
$new_price = get_post_meta( get_the_ID(), '_level_1', true );
$new_price = trim($new_price,'$');
$price = $new_price;
}
if (has_role_wanted('level_2_customers')){
$new_price = get_post_meta( get_the_ID(), '_level_2', true );
$new_price = trim($new_price,'$');
$price = $new_price;
}
if (has_role_wanted('level_3_customers')){
$new_price = get_post_meta( get_the_ID(), '_level_3', true );
$new_price = trim($new_price,'$');
$price = $new_price;
}
return $price;
}

function has_role_wanted($role = '',$user_id = null){
if ( is_numeric( $user_id )){
$user = get_user_by( 'id',$user_id );
}
else {
$user = wp_get_current_user();
}
if ( empty( $user ) ) {
return false;
}
return in_array( $role, (array) $user->roles );
}

РЕДАКТИРОВАТЬ: НАЙТИ НОМЕР !! Проблема заключается в get_post_meta (get_the_ID ()). В конечном итоге он получает идентификатор корзины, а не идентификатор продукта, поэтому он отображается как бесплатный.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]